2017-06-16 96 views
-2

我是c#中的新手,我想知道为什么我们必须实现INotifyPropertyChanged当我们使用TwoWay绑定时?并为OneWay也?INotifyPropertyChanged vs双向绑定

谢谢

+1

'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) –

+0

但定义TwoWay **更新**目标属性或属性,无论目标属性或源属性更改 – theboss

+0

[为什么使用WPF中的绑定INotifyPropertyChanged?](https://stackoverflow.com /问题/ 10475130 /为什么使用-INotifyPropertyChanged的与 - 绑定功能于WPF) – Liam

回答

1

简言之,以支持单向/双向绑定,底层数据必须实施INotifyPropertyChanged的

然后单向/双向绑定只是选择装订方向,你可以找到更多在这里:

Various wpf binding modes

0

实施INotifyPropertyChanged只是提供类(别人比一个实现它)对财产变化作出反应的可能性。

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

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

0

INotifyPropertyChanged的,好像是这个名字,是通知你的客户,你的属性已更改,请参阅MSDN

你会需要它更新UI时性质发生变化。


单向(源到目标):为propertyChange将促使UI更新和UI操作不会导致的propertyChange。 (两种方式):Proerty和UI都是完全绑定的,它们中的任何一个都会影响另一个。

只要您在此情况下为您的财产实施INotifyPropertyChanged,绑定就可以工作。

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