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是第一个版本中的依赖属性和第二个版本中的简单 .NET 属性。请参阅为什么依赖属性?

通常,AddOwner用于使依赖属性在最终不是从拥有依赖属性的类型派生的类型上可用。

于 2012-05-25T11:04:48.963 回答