3

パラメータ化されたスタイルの作成方法に関するチュートリアルを読んでいました(here)。その中で、いくつかの依存関係プロパティを使用します。次のように宣言します。

public static Brush GetTickBrush(DependencyObject obj)
{
    return (Brush)obj.GetValue(TickBrushProperty);
}
public static void SetTickBrush(DependencyObject obj, Brush value)
{
    obj.SetValue(TickBrushProperty, value);
}
public static readonly DependencyProperty TickBrushProperty =
    DependencyProperty.RegisterAttached(
        "TickBrush",
        typeof(Brush),
        typeof(ThemeProperties),
        new FrameworkPropertyMetadata(Brushes.Black));

さて、私はスニペットが好きなので、スニペットを作成する必要がないかどうかを確認するために、先に進んでスニペットを探しました。1つありましたが、完全に異なるスタイルでした:

public int MyProperty
{
    get { return (int)GetValue(MyPropertyProperty); }
    set { SetValue(MyPropertyProperty, value); }
}
// Using a DependencyProperty as the backing store for MyProperty.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty MyPropertyProperty = 
    DependencyProperty.Register("MyProperty", typeof(int), typeof(ownerclass), new PropertyMetadata(0));

さて、私が得られないこと:これら2つの違いは何ですか? なぜDependencyObject一方は値を取得する必要があるのに、もう一方は必要ないのですか? それらを別々のシナリオで使用しますか?

4

1 に答える 1

4

最初に示す例は、特別な種類の依存関係プロパティである添付プロパティの例です。添付プロパティの値は他のオブジェクトに「添付」できますが、通常の依存関係プロパティはそれぞれのクラスのインスタンスに属します。

2 番目のコード スニペットは通常の依存関係プロパティを示しており、作成中のカスタム クラスに追加の依存関係プロパティを追加するだけの場合に使用します。

于 2013-06-18T19:33:04.957 に答える