我是c#中的新手,我想知道为什么我们必须实现INotifyPropertyChanged当我们使用TwoWay绑定时?并为OneWay也?INotifyPropertyChanged vs双向绑定
谢谢
我是c#中的新手,我想知道为什么我们必须实现INotifyPropertyChanged当我们使用TwoWay绑定时?并为OneWay也?INotifyPropertyChanged vs双向绑定
谢谢
简言之,以支持单向/双向绑定,底层数据必须实施INotifyPropertyChanged的。
然后单向/双向绑定只是选择装订方向,你可以找到更多在这里:
实施INotifyPropertyChanged
只是提供类(别人比一个实现它)对财产变化作出反应的可能性。
如果未实现该接口,则不可行,因为如果类实例(例如A
在B
上设置属性),则第三个类实例C
将无法跟踪该信息。设置该属性现在只是A
和B
的一个问题。如果C
知道B
确实实现了INotifyPropertyChanged
,它可以简单地向事件PropertyChanged
(它是接口的一部分)添加一个事件处理程序并对其作出反应 - 仍希望B
将按预期抛出事件。
绑定需要该信息来更新模型(数据)或视图,具体取决于发生更改的位置。所以基本上,他们是C
正在倾听其他对象的变化(A
& B
)。
INotifyPropertyChanged的,好像是这个名字,是通知你的客户,你的属性已更改,请参阅MSDN
你会需要它更新UI时性质发生变化。
单向(源到目标):为propertyChange将促使UI更新和UI操作不会导致的propertyChange。 (两种方式):Proerty和UI都是完全绑定的,它们中的任何一个都会影响另一个。
只要您在此情况下为您的财产实施INotifyPropertyChanged,绑定就可以工作。
如果你不这样做,即使你使用Twoway也不会改变。
'INotifyPropertyChanged'基本上是“让视图知道”的东西已经从代码改变,它需要更新视觉以反映变化。双向绑定意味着可以从代码或视图中更改该值。这个链接可以帮助更多:[WPF Binding One Way and Two Way](http://www.c-sharpcorner.com/blogs/wpf-binding-one-way-and-twoway1)和MSDN [Binding.Mode属性(https://msdn.microsoft.com/en-us/library/system.windows.data.binding.mode(v = vs.110)。aspx) –
但定义TwoWay **更新**目标属性或属性,无论目标属性或源属性更改 – theboss
[为什么使用WPF中的绑定INotifyPropertyChanged?](https://stackoverflow.com /问题/ 10475130 /为什么使用-INotifyPropertyChanged的与 - 绑定功能于WPF) – Liam