如何订阅更改DependencyProperty?

18

可能重复:
如何监听依赖属性的变化?

请原谅我的英语。

我需要创建一个类,能够订阅依赖属性的变化,并根据该属性的新值执行某些操作。

就像这样:

MyClass obj = new MyClass();
obj.Subscribe(TextBox.TextProperty, myTextBox);

我该如何做到这一点?

1个回答

35

这里有一种方法可以使用便捷的DependencyPropertyDescriptor类来完成。

 var pd = DependencyPropertyDescriptor.FromProperty(TextBox.TextProperty, typeof(TextBox));
 pd.AddValueChanged(myTextBox, OnTextChanged);


 private void OnTextChanged(object sender, EventArgs e)
 {
     ...
 }

16
这种方法会导致内存泄漏(请参阅 http://agsmith.wordpress.com/2008/04/07/propertydescriptor-addvaluechanged-alternative/)。 - Ilya Serbis
4
如果通过RemoveValueChanged()方法移除处理程序或者对象本身在进程中存在的时间足够长,就不会出现泄漏问题。使用时要谨慎。 - Vimes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接