如何将DependencyProperty添加到Button?

Ben*_*Ben 5 wpf binding dependency-properties

我基本上只是尝试在按钮上添加一些属性来存储一些额外的信息以供以后使用.我选择这样做而不是基于Button创建UserControl只是因为它似乎更少的代码.

我已经按照我在微软网站上看到的例子进行了操作,我得到错误"A'Binding'不能在'Button'的'SetSortIndicatorVisibility'属性上设置.'绑定'只能设置在DependencyObject的DependencyProperty." 它没有意义,因为Button是DependencyObject,我正在添加DependencyProperty.我最初开始使用AttachedProperty,但我已经解决了这个问题.我甚至已经把我所有与此相关的代码都放在一个测试项目中,我仍然遇到这个错误.所有这些测试代码如下:

DependencyProperty定义:

public static readonly DependencyProperty SortIndicatorVisibilityProperty = DependencyProperty.Register( "SortIndicatorVisibility", typeof( Visibility ), typeof( Button ), new FrameworkPropertyMetadata( Visibility.Visible, FrameworkPropertyMetadataOptions.AffectsRender ) );

    public static void SetSortIndicatorVisibility( Button button, Visibility value )
    {
        button.SetValue( SortIndicatorVisibilityProperty, value );
    }
    public static Visibility GetSortIndicatorVisibility( Button button )
    {
        return ( Visibility ) button.GetValue( SortIndicatorVisibilityProperty );
    }
Run Code Online (Sandbox Code Playgroud)

包含具有新属性和绑定的按钮的Window XAML:

<Window x:Class="Testing.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ext="clr-namespace:Testing"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Button Content="Test"
            Command="{Binding TestCommand}"
            ext:Class1.SortIndicatorVisibility="{Binding SortIndicatorVisibilitySiteName}" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

最后,DependencyProperty绑定的属性:

public Visibility SortIndicatorVisibilitySiteName
    {
        get
        {
            return Visibility.Visible;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Tho*_*que 5

您不能将"普通"依赖项属性添加到任意类,它必须是附加属性.此外,所有者类型不应该是Button,它应该是声明属性的类