MS定义附加属性,如'Grid.RowProperty'和'Grid.ColumnProperty',但在XAML中你只需用'Grid.Row'和'Grid.Column'来调用它
我尝试使用名为'MyValProperty'的附加属性执行相同操作,该属性在类'Foo'上注册了名为'MyVal',但XAML不会让我输入'Foo.MyVal'而是让我输入'Foo.MyValProperty'MS如何做到这一点?我错过了什么?
答案 0 :(得分:2)
背景如下register an attached property
public static readonly DependencyProperty IsBubbleSourceProperty = DependencyProperty.RegisterAttached(
"IsBubbleSource",
typeof(Boolean),
typeof(AquariumObject),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)
);
public static void SetIsBubbleSource(UIElement element, Boolean value)
{
element.SetValue(IsBubbleSourceProperty, value);
}
public static Boolean GetIsBubbleSource(UIElement element)
{
return (Boolean)element.GetValue(IsBubbleSourceProperty);
}
您还可以使用标准属性格式而不是Set / Get构造。这是WPF有一个强有力的公约的领域之一。 AttachedProperty
(或任何DependencyProperty
)有三个部分。第一种是使用DependencyProperty.RegisterAttached
注册属性,返回值应设置为名为[Property Name] Property的公共静态变量。第二个是注册你的财产时的第一个参数应该是“[Property Name]”。第三个是你将用来与外界交互的Get / Set方法,它们应该命名为Get [Property Name],Set [Property Name]。
如果按照惯例进行设置,WPF会识别出两者已连接,并且应该允许您按预期使用该属性。