3

誰かがWPF(依存関係プロパティ)でAddOwnerメソッドを使用する利点は何ですか?誤解があります。

たとえば、以下のコードを参照してください。

public class TestVisual: Shape
{
    private LineGeometry line = new LineGeometry();

    public static readonly DependencyProperty XY1Property =
        LineGeometry.StartPointProperty.AddOwner(
            typeof(TestVisual),
            new FrameworkPropertyMetadata(new Point(0,0),
                FrameworkPropertyMetadataOptions.AffectsMeasure));

    public static readonly DependencyProperty XY2Property =
        LineGeometry.EndPointProperty.AddOwner(
            typeof(TestVisual),
            new FrameworkPropertyMetadata(new Point(0, 0),
                FrameworkPropertyMetadataOptions.AffectsMeasure));


    public Point XY1
    {
        get { return (Point)GetValue(XY1Property);}
        set { SetValue(XY1Property,value); }
    }

    public Point XY2
    {
        get { return (Point)GetValue(XY2Property); }
        set { SetValue(XY2Property, value); }
    }


    protected override Geometry DefiningGeometry
    {
        get
        {
            line.StartPoint = XY1 ;
            line.EndPoint = XY2;                         
            return line;
        }
    }
}

ご覧のとおり、上記のコードから、TestVisualクラスは依存関係プロパティにAddOwnerメソッドを使用しています。わかりましたが、同じ結果をより簡単に取得できます(つまり、XY1ポイントとXY2ポイントを設定することで、線の視覚要素を調整できるクラスを取得できます)。

    public class TestVisual: Shape
{
    private LineGeometry line = new LineGeometry();

    public Point XY1
    {
        get;
        set;
    }

    public Point XY2
    {
        get;
        set;
    }


    protected override Geometry DefiningGeometry
    {
        get
        {
            line.StartPoint = XY1 ;
            line.EndPoint = XY2;                         
            return line;
        }
    }
}

それで、要点は何ですか?前もって感謝します。

4

1 に答える 1

2

重要なのは、XY1XY2は最初のバージョンでは依存関係プロパティであり、2番目のバージョンでは単純な.NETプロパティであるということです。依存関係のプロパティを参照してください。

一般に、AddOwner依存関係プロパティを所有する型から最終的に派生しない型で依存関係プロパティを使用できるようにするために使用されます。

于 2012-05-25T11:04:48.963 に答える