首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在DependencyObject上使用DependencyProperty.AddOwner方法而不是简单的POCO属性getter/setter的原因是什么?

在DependencyObject上使用DependencyProperty.AddOwner方法而不是简单的POCO属性getter/setter的原因是什么?
EN

Stack Overflow用户
提问于 2012-05-25 19:02:06
回答 1查看 2.6K关注 0票数 3

有人能解释一下,在WPF中使用AddOwner方法(依赖属性)有什么好处吗?我有一些误解。

对于实例,请看下面的代码。

代码语言:javascript
运行
复制
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点来调整线视觉元素):

代码语言:javascript
运行
复制
    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;
        }
    }
}

那么重点是什么呢?提前谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2012-05-25 19:04:49

关键是XY1XY2在第一个版本中是依赖属性,在第二个版本中是简单的.NET属性。请参阅Why dependency properties?

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

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10753286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档