DependencyProperty.Register()的用法?

我有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上的依赖项属性路径...(来自Binstance.Path =“value”之类的代码),我期望OnPathChanged方法在A控件内部触发?

不是预期的行为还是我错过了什么? 我如何得到这个工作? ...即改变B上的路径属性应该在A上触发OnPAthChanged

谢谢!


我想你误解了DependencyProperties的概念......两个单独的控件不会接收对方事件的更新 - 两个依赖项派生对象也不会接收其他对象更改的通知(例如,如果您有两个文本框 - 更改一个TextProperty ,对另一个什么也没有)。 如果你真的希望你的第二个控件类型触发静态验证回调 - 你需要公开它,并在你注册类B上的DependencyProperty时调用它。我不会推荐它 - 它给你非常紧密的耦合这两个类没有共同之处(正如我理解你的例子)。

链接地址: http://www.djcxy.com/p/67565.html

上一篇: DependencyProperty.Register() usage?

下一篇: Using dependency properties in wpf