可以仅为SourceChanged事件使用Bindings吗?

时间:2010-03-12 05:33:50

标签: wpf binding

基本上我想使用WPF Binding框架来“观察”数据上下文中的属性,并且当该值更改为调用事件处理程序时。我实际上并不想将它绑定到任何目标。

听起来很简单,但是我可以看到绑定过于耦合(对于可视树和其他各种位),以便能够灵活地使用它。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您认为绑定与可视树相关联是正确的:它们是将UI元素挂钩到数据元素。因此,如果您想为此使用绑定,则必须将其设置在虚拟框架元素上。

但是,如果WPF可以观察该属性,那么你也可以。 WPF只是使用数据上下文对象的INotifyPropertyChanged接口。因此,您可以将想要观察的对象强制转换为INotifyPropertyChanged,并订阅其PropertyChanged事件,而不是设置绑定。在内部,无论如何,这都是WPF所做的。

(如果您担心生命周期问题,WPF会提供使用弱引用的PropertyChangedEventManager。调用PropertyChangedEventManager(dataObject, listenerObject, "WhateverPropertyYouWant")其中listenerObject是您希望接收更改通知的对象。)