2017-06-16 45 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也不會改變。