IObservable <T>和INotifyPropertyChanged - 是否存在连接

Awk*_*der 12 data-binding wpf binding inotifypropertychanged system.reactive

我理解IObservable<T>&IObserver<T>是观察者模式的实现,并且可以在类似的情况下用于.Net事件.

我想知道是否有任何关系INotifyPropertyChanged

我目前INotifyPropertyChanged在winforms和WPF应用程序中用于数据绑定,并且想知道我是否能够在UI数据绑定方案中使用IObservable?

干杯

AWC

mic*_*tan 5

从我可以收集到的,没有任何关系.Observers/.NET事件是实现Observer/Notification样式行为的两种方法.

微软的答案是建立在.NET事件模式之上,而不是弃用它而转向手动注册的Observer对象.

我遇到的最大问题之一就是无法按需清除代理链,这会导致相当多的托管内存泄漏情况.为此,微软引入了弱事件的概念,即解决Observables/Observers不匹配的时间线问题.

您可以在此处阅读有关WeakEvent模式的更多信息.

约什-史密斯已经发布了WeakEventManager的的implmentation为INotifyPropertyChanged的位置.这提供了一种更安全的(从内存角度来看)连接更改属性的对象及其观察者的方法.


And*_*ndy 3

除非 WinForms 和 WPF 绑定也支持IObservable,否则它无助于使 UI 随着模型的更改而更新。您可以使用的原因INotifyPropertyChanged是 WinForms 和 WPF 中的绑定代码会查找此接口,并且在实现时使用其事件来保持 UI 最新。

  • 问:“我目前在 winforms 和 WPF 应用程序中使用 INotifyPropertyChanged 进行数据绑定,想知道是否能够在 UI 数据绑定场景中使用 IObservable?” 答:除非 WinForms 和 WPF 绑定也支持 IObservable,否则它无助于使 UI 随着模型的更改而更新。您可以使用 INotifyPropertyChanged 的​​原因是因为 WinForms 和 WPF 中的绑定代码会查找此接口,并且在实现时使用其事件来保持 UI 最新。对我来说,这个问题显然已经得到了回答。 (3认同)
  • @AWC:相反,他的解释确实解决了您的问题,特别是您的最后一个问题。 (2认同)
  • 我认为 AWC 正在寻找的答案是关于 Winforms 还是 WPF 是否会以绑定能力支持 IObservable 接口的明确答案。在这方面,安迪通过指出一个更基本的问题提供了一些见解,但没有真正给出明确的答案。 (2认同)