DependencyProperty.Register() 用法?
Posted
技术标签:
【中文标题】DependencyProperty.Register() 用法?【英文标题】:DependencyProperty.Register() usage? 【发布时间】:2010-08-02 14:33:35 【问题描述】:我有 2 个控件 A 和 B 需要共享一个依赖属性。
A 的属性定义为:
public static readonly DependencyProperty PathProperty= DependencyProperty.Register("PathProperty", typeof(string), typeof(A), 新的 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 上明确设置依赖属性 Path ...(来自 Binstance.Path = "value" 之类的代码) 我希望 OnPathChanged 方法在 A 控件内部触发?
这不是预期的行为还是我错过了什么?我怎样才能让它工作? ...即更改 B 上的路径属性应在 A 上触发 OnPAthChanged
谢谢!
【问题讨论】:
【参考方案1】:我认为您误解了 DependencyProperties 的概念...两个单独的控件不会接收彼此事件的更新 - 两个 Dependency 派生对象也不会接收其他对象更改的通知(例如,如果您有两个文本框 -改变一个人的 TextProperty,对另一个人没有任何作用)。如果您真的希望您的第二个 Control 类型触发静态验证回调 - 您需要将其公开并在 B 类上的 DependencyProperty 注册中调用它。不过我不推荐它 - 它使您之间的耦合非常紧密否则没有共同点的两个类(据我了解您的示例)。
【讨论】:
以上是关于DependencyProperty.Register() 用法?的主要内容,如果未能解决你的问题,请参考以下文章