无法绑定自定义控件内容(WPF)

德米特里亚诺

我有一个基于Button的琐碎的自定义控件:

<Style TargetType="{x:Type local:ArrowButton}">

    <Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/>
    <Setter Property="BorderBrush" Value="{StaticResource NormalBorderBrush}"/>
    <Setter Property="Focusable" Value="True"/>

    <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:ArrowButton}">
                <Grid>
                    <Ellipse Fill="{TemplateBinding Background}" Stroke="{TemplateBinding BorderBrush}"/>
                    <ContentPresenter/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

它没有任何重要的C#代码:

public class ArrowButton : Button, IDisposable
{
    static ArrowButton()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(ArrowButton), new FrameworkPropertyMetadata(typeof(ArrowButton)));
    }
}

如果我以以下方式使用此控件(在某些UserControl中),则可以正常工作(我有两个带有黑色三角形的按钮):

    <Grid.Resources>
        <Style TargetType="local:ArrowButton">
            <Setter Property="Width" Value="30"/>
            <Setter Property="Height" Value="30"/>
        </Style>
    </Grid.Resources>

    <local:ArrowButton Grid.Column="0" HorizontalAlignment="Left">
        <Path HorizontalAlignment="Center" VerticalAlignment="Center" Fill="Black" Data="M  0 0 L 0 20 L 10 10 Z"/>
    </local:ArrowButton>
    <local:ArrowButton Grid.Column="1" HorizontalAlignment="Right">
        <Path HorizontalAlignment="Center" VerticalAlignment="Center" Fill="Black" Data="M  0 0 L 0 20 L 10 10 Z"/>
    </local:ArrowButton>

但是,如果我将Path移到StaticResource上,则会得到一个奇怪的效果:只有最后一个按钮具有黑色三角形,而UserConltrol上的所有其他按钮仍为空(看起来像Path绑定一次)。

    <Grid.Resources>
    <Path x:Key="ArrowPath" Fill="Black" Data="M  0 0 L 0 20 L 10 10 Z"/>
    </Grid.Resources>

    <local:ArrowButton Content="{StaticResource ArrowPath}" Grid.Column="0" HorizontalAlignment="Left"/>
    <local:ArrowButton Content="{StaticResource ArrowPath}" Grid.Column="1" HorizontalAlignment="Left"/>

有什么想法,可能有什么问题吗?

阿迪·莱斯特(Adi Lester)

x:Shared="False"声明Path资源需要使用

<Path x:Key="ArrowPath" x:Shared="False" Fill="Black" Data="M  0 0 L 0 20 L 10 10 Z"/>

否则,Path将使用相同的对象,这将Path一次又一次更改的视觉父对象(直到最后一个对象停止ArrowButton)。设置x:Shared="False"将在Path每次使用对象时创建一个新的对象实例,这将解决您的问题。

确保您还阅读x:Shared了链接页面底部列出的有关在WPF可以在何处使用的限制

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WPF自定义控件:将CollectionViewSource绑定到DependencyProperty

来自分类Dev

自定义控件数据绑定wpf

来自分类Dev

WPF:自定义创建的用户控件中的数据绑定

来自分类Dev

无法将对象的属性绑定到自定义控件

来自分类Dev

wpf-无法使用自定义控件

来自分类Dev

使用ObservableCollection的自定义控件绑定

来自分类Dev

MVVMCross自定义控件和绑定

来自分类Dev

使用ObservableCollection的自定义控件绑定

来自分类Dev

自定义控件绑定未更新

来自分类Dev

WPF自定义控件-绑定到在后台代码中定义的命令

来自分类Dev

自定义 WPF 控件的好处

来自分类Dev

WPF 样式自定义控件

来自分类Dev

自定义控件中的WPF扩展工具包控件无法通过表单生成吗?

来自分类Dev

Xamarin,带有布局的自定义控件,可在特定位置接受可绑定的内容

来自分类Dev

绑定到wpf自定义控件依赖项属性以获取工具提示吗?

来自分类Dev

绑定到wpf自定义控件依赖项属性以获取工具提示吗?

来自分类Dev

具有自定义类型和插入控件的WPF ListView绑定

来自分类Dev

WPF自定义控件依赖项属性中未知对象的双向绑定问题

来自分类Dev

无法在ListView中使用UWP中的自定义控件来绑定属性

来自分类Dev

无法将ObservableCollection绑定到包含自定义控件的listView

来自分类Dev

Xamarin Forms 自定义控件和可绑定属性无法按预期工作

来自分类Dev

子控件未继承 WPF 自定义控件样式

来自分类Dev

使用自定义WPF控件时无法设置某些属性

来自分类Dev

无法绑定自定义MvvmCross视图

来自分类Dev

将集合绑定到自定义控件属性

来自分类Dev

自定义控件,绑定到背后的代码

来自分类Dev

在自定义控件上进行OneWayToSource / TwoWay绑定

来自分类Dev

绑定到ItemsControl的DataTemplate内部的自定义控件

来自分类Dev

自定义控件绑定不起作用

Related 相关文章

  1. 1

    WPF自定义控件:将CollectionViewSource绑定到DependencyProperty

  2. 2

    自定义控件数据绑定wpf

  3. 3

    WPF:自定义创建的用户控件中的数据绑定

  4. 4

    无法将对象的属性绑定到自定义控件

  5. 5

    wpf-无法使用自定义控件

  6. 6

    使用ObservableCollection的自定义控件绑定

  7. 7

    MVVMCross自定义控件和绑定

  8. 8

    使用ObservableCollection的自定义控件绑定

  9. 9

    自定义控件绑定未更新

  10. 10

    WPF自定义控件-绑定到在后台代码中定义的命令

  11. 11

    自定义 WPF 控件的好处

  12. 12

    WPF 样式自定义控件

  13. 13

    自定义控件中的WPF扩展工具包控件无法通过表单生成吗?

  14. 14

    Xamarin,带有布局的自定义控件,可在特定位置接受可绑定的内容

  15. 15

    绑定到wpf自定义控件依赖项属性以获取工具提示吗?

  16. 16

    绑定到wpf自定义控件依赖项属性以获取工具提示吗?

  17. 17

    具有自定义类型和插入控件的WPF ListView绑定

  18. 18

    WPF自定义控件依赖项属性中未知对象的双向绑定问题

  19. 19

    无法在ListView中使用UWP中的自定义控件来绑定属性

  20. 20

    无法将ObservableCollection绑定到包含自定义控件的listView

  21. 21

    Xamarin Forms 自定义控件和可绑定属性无法按预期工作

  22. 22

    子控件未继承 WPF 自定义控件样式

  23. 23

    使用自定义WPF控件时无法设置某些属性

  24. 24

    无法绑定自定义MvvmCross视图

  25. 25

    将集合绑定到自定义控件属性

  26. 26

    自定义控件,绑定到背后的代码

  27. 27

    在自定义控件上进行OneWayToSource / TwoWay绑定

  28. 28

    绑定到ItemsControl的DataTemplate内部的自定义控件

  29. 29

    自定义控件绑定不起作用

热门标签

归档