MS 定义了附加属性,如“Grid.RowProperty”和“Grid.ColumnProperty”,但在 XAML 中,您只需使用“Grid.Row”和“Grid.Column”来调用它
我尝试对名为“MyValProperty”的附加属性执行相同操作,该属性在“Foo”类上以名称“MyVal”注册,但 XAML 不允许我输入“Foo.MyVal”,而是让我输入“Foo” .MyValProperty' MS 是如何做到的?我错过了什么?
MS 定义了附加属性,如“Grid.RowProperty”和“Grid.ColumnProperty”,但在 XAML 中,您只需使用“Grid.Row”和“Grid.Column”来调用它
我尝试对名为“MyValProperty”的附加属性执行相同操作,该属性在“Foo”类上以名称“MyVal”注册,但 XAML 不允许我输入“Foo.MyVal”,而是让我输入“Foo” .MyValProperty' MS 是如何做到的?我错过了什么?
作为背景,这里是注册附加属性的方法
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
a (或 any DependencyProperty
)由三个部分组成。第一个是注册属性,DependencyProperty.RegisterAttached
返回值应该设置为一个名为 [Property Name]Property 的公共静态变量。第二个是注册属性时的第一个参数应该是“[Property Name]”。第三个是用于与外界交互的 Get/Set 方法,应命名为 Get[Property Name], Set[Property Name]。
如果您按照约定进行设置,WPF 将识别出两者是连接的,并且应该允许您按预期使用该属性。