我是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