INotifyPropertyChanged 与双向绑定

INotifyPropertyChanged vs Two way binding

我是 c# 的新手,我想知道为什么我们在使用 TwoWay 绑定时必须实现 INotifyPropertyChanged 接口??并且对于 OneWay 也是 ??

谢谢

实施 INotifyPropertyChanged 仅提供 classes(实施者除外)对 属性 变化做出反应的可能性。

如果没有实现该接口,这是不可能的,因为如果一个 class 实例,比如说 AB 上设置一个 属性,第三个 class 实例 C 无法跟踪该信息。设置 属性 现在只是 AB 的一个问题。但是,如果 C 知道 B 确实实现了 INotifyPropertyChanged,它可以简单地向事件 PropertyChanged 添加一个事件处理程序(它是接口的一部分)并对其做出反应 -仍然希望 B 能按预期抛出事件。

绑定需要该信息来更新模型(数据)或视图,具体取决于更改发生的位置。所以基本上,它们是 C 监听其他对象的变化 (A & B)。

INotifyPropertyChanged,顾名思义就是通知你的客户你的属性已经改变了,见MSDN

当属性发生变化时,您将需要它来更新您的 UI。


OneWay(源到目标):属性更改将导致 UI 更新并且 UI 操作不会导致 属性 更改。 *

TwoWay(Both way): Proerty和UI是完全绑定的,任何一个改变都会影响另一个。

在这种情况下,只要您为 属性 实现 INotifyPropertyChanged,绑定就可以工作。

如果不这样做,即使使用 Twoway 也不会改变。

为了支持 OneWay/TwoWay 绑定,基础数据 必须 实现 INotifyPropertyChanged.

那么OneWay/TwoWay绑定就是选择绑定方向,你可以在这里找到更多:

Various wpf binding modes