我基本上只是想在按钮上添加几个属性,以存储一些额外的信息以备后用。我选择执行此操作而不是基于Button创建UserControl仅仅是因为它看起来似乎更少的代码。

我已按照在Microsoft网站上看​​到的示例进行操作,但收到错误消息“无法在类型为“按钮”的'SetSortIndicatorVisibility'属性上设置“绑定(bind)”。 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 );
    }

Window XAML包含具有new属性和绑定(bind)的按钮:
<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>

最后,DependencyProperty属性绑定(bind)到:
public Visibility SortIndicatorVisibilitySiteName
    {
        get
        {
            return Visibility.Visible;
        }
    }

最佳答案

您不能向任意类添加“常规”依赖项属性,它必须是附加属性。另外,所有者类型不应为Button,而应为声明属性的类

关于wpf - 如何将DependencyProperty添加到按钮?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4702088/

10-10 16:37