【发布时间】:2011-01-15 20:55:36
【问题描述】:
我基本上只是想向按钮添加几个属性来存储一些额外的信息以供以后使用。我选择这样做而不是基于按钮创建 UserControl 仅仅是因为它看起来像更少的代码。
我按照我在 Microsoft 网站上看到的示例进行操作,但收到错误消息“无法在 'Button' 类型的 'SetSortIndicatorVisibility' 属性上设置 'Binding'。'Binding' 只能是在 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 );
}
包含具有新属性和绑定的按钮的窗口 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>
最后,DependencyProperty 绑定的属性:
public Visibility SortIndicatorVisibilitySiteName
{
get
{
return Visibility.Visible;
}
}
【问题讨论】:
标签: wpf binding dependency-properties