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