0

MS 定义了附加属性,如“Grid.RowProperty”和“Grid.ColumnProperty”,但在 XAML 中,您只需使用“Grid.Row”和“Grid.Column”来调用它

我尝试对名为“MyValProperty”的附加属性执行相同操作,该属性在“Foo”类上以名称“MyVal”注册,但 XAML 不允许我输入“Foo.MyVal”,而是让我输入“Foo” .MyValProperty' MS 是如何做到的?我错过了什么?

4

1 回答 1

3

作为背景,这里是注册附加属性的方法

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 具有强大约定的领域之一。AttachedPropertya (或 any DependencyProperty)由三个部分组成。第一个是注册属性,DependencyProperty.RegisterAttached返回值应该设置为一个名为 [Property Name]Property 的公共静态变量。第二个是注册属性时的第一个参数应该是“[Property Name]”。第三个是用于与外界交互的 Get/Set 方法,应命名为 Get[Property Name], Set[Property Name]。

如果您按照约定进行设置,WPF 将识别出两者是连接的,并且应该允许您按预期使用该属性。

于 2010-10-15T14:30:42.810 回答