首页 文章

DependencyProperty.Register()用法?

提问于
浏览
1

我有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属性路径...(从像Binstance.Path =“value”这样的代码)我会期望OnPathChanged方法在A控件内部触发?

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

谢谢!

1 回答

  • 0

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

相关问题