0

MS は 'Grid.RowProperty' や 'Grid.ColumnProperty' などの添付プロパティを定義していますが、XAML では 'Grid.Row' および 'Grid.Column' で呼び出すだけです。

クラス「Foo」に「MyVal」という名前で登録された「MyValProperty」という添付プロパティで同じことを試みましたが、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 が強力な規約を定めている分野の 1 つです。AttachedProperty(または任意の)には 3 つの部分がありますDependencyProperty。1 つ目は、プロパティを登録するDependencyProperty.RegisterAttachedことです。戻り値は、[プロパティ名]Property という名前の public static 変数に設定する必要があります。2 つ目は、プロパティを登録するときの最初の引数は「[プロパティ名]」にする必要があることです。3 つ目は、Get[プロパティ名]、Set[プロパティ名] という名前で、外の世界と対話するために使用する Get/Set メソッドです。

規則に従って設定すると、WPF は 2 つが接続されていることを認識し、期待どおりにプロパティを使用できるようにする必要があります。

于 2010-10-15T14:30:42.810 に答える