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

标签 wpf data-binding binding inotifypropertychanged system.reactive

我了解 IObservable<T> & IObserver<T>是观察者模式的实现,可以在与 .Net 事件类似的情况下使用。

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

我目前使用INotifyPropertyChanged用于 winforms 和 WPF 应用程序中的数据绑定(bind),想知道我是否能够在 UI 数据绑定(bind)场景中使用 IObservable?

干杯

AWC

最佳答案

据我所知,没有任何关系。 Observers/.NET 事件是实现 Observer/Notification 样式行为的两种方式。

Microsoft 的答案是建立在 .NET 事件模式之上,而不是弃用它以支持手动注册的 Observer 对象。

我对事件最大的不满之一是无法按需清除委托(delegate)链,这会导致很多托管内存泄漏情况。为此,微软引入了弱事件的概念,即解决 Observables/Observers 时间线不匹配的问题。

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

Josh Smith 为 INotifyPropertyChanged here 发布了 WeakEventManager 的实现。 .这提供了一种更安全(从内存的角度来看)连接更改属性的对象及其观察者的方法。

关于wpf - IObservable<T> 和 INotifyPropertyChanged - 是否存在连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2162796/

相关文章:

WPF MVVM : ICommand Binding to controls

c# - WPF 数据网格 : How to perform column binding using code behind?

data-binding - UI5中单向绑定(bind)和一次性绑定(bind)的区别

wpf - 将资源字典添加到 wpf 中的用户控件库

c# - 具有多个控件的 WPF 数据绑定(bind)

JavaFX:将 TextProperty(例如标签)绑定(bind)到一个简单的整数

c# - WPF 项目控制 : Can't seem to get items to display in the view

python - 优化:Python、Perl 和 C 后缀树库

c# - WPF 删除选中项目的 ListView 边框

c# - 列表框迭代 WPF