DependencyProperty.Register()用法?

时间:2010-08-02 14:33:35

标签: wpf c#-3.0 wpf-controls dependency-properties

我有2个需要共享依赖项属性的控件A和B.

A的属性定义为:

public static readonly DependencyProperty PathProperty = DependencyProperty.Register(“PathProperty”,typeof(string),typeof(A),             new PropertyMetadata(string.Empty,OnPathChanged));

    public string Path
    {
        get { return (string)GetValue(PathProperty); }
        private set { SetValue(PathProperty, value); }
    }

    private static void OnPathChanged(DependencyObject dobj, DependencyPropertyChangedEventArgs args)
    {
       //Dos something
    }

B级内部, 我有

public static readonly DependencyProperty Path = A.PathProperty.AddOwner(typeof(B));

    public string Path
    {
        get { return (string)GetValue(Path); }
        set { SetValue(Path, value); }
    }     

现在,如果我在B上明确设置了Dependency属性Path ...(来自Binstance.Path =“value”之类的代码) 我希望OnPathChanged方法在A控件内部触发?

不是预期的行为还是我错过了什么?我如何让它工作? ...即在B上改变路径属性应该在A

上触发OnPAthChanged

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你误解了DependencyProperties的概念......两个独立的控件没有收到彼此事件的更新 - 两个依赖关系派生的对象也没有收到其他对象更改的通知(例如,如果你有两个文本框 - 改变一个人的TextProperty,对另一个人什么都不做。如果你真的希望你的第二个Control类型触发静态验证 - 回调 - 你需要将它公开并在你注册B类的DependencyProperty时调用它。我不会推荐它 - 它给你非常紧密的耦合两个没有任何共同点的类(我理解你的例子)。