小编Ben*_*Ben的帖子

如何将DependencyProperty添加到Button?

我基本上只是尝试在按钮上添加一些属性来存储一些额外的信息以供以后使用.我选择这样做而不是基于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 …
Run Code Online (Sandbox Code Playgroud)

wpf binding dependency-properties

5
推荐指数
1
解决办法
3834
查看次数

标签 统计

binding ×1

dependency-properties ×1

wpf ×1