43
A
回答
81
OneWay
:當你想綁定的屬性來更新用戶界面使用此功能。TwoWay
:這與OneWay
和OneWayToSource
相同。綁定屬性將更新用戶界面,並在用戶界面的變化將更新綁定屬性OneTime
(你會使用這個具有TextBox
或例如Checkbox
):這有相同的行爲OneWay
除了它會只更新一次用戶界面。這應該是您綁定的默認選擇(出於各種原因,這裏我不會詳細說明),如果您確實需要額外的功能,則應該只使用其他類型的綁定。OneWayToSource
:這與OneWay
相反 - 用戶界面值更改會更新綁定屬性。
如果您不指定任何內容,則行爲將取決於您使用的控件。請參閱BindingMode
enum on MSDN。
16
A結合由兩個實體組成:
- 的源(典型視圖模型中MVVM場景)
- 的目標(UI控制)
目標具有成爲DependencyObject
(用於綁定工作),並且源可以是DependencyObject
或者它應該有一些模仿WPF綁定系統的機制m關於它被改變(實現INotifyPropetyChnaged
接口)。
MVVM建議視圖模型項目是從任何查看相關引用免費,因此建議使用INotifyPropertyChanged
界面,使通過WPF結合正在審理源對象。 綁定發生在來源屬性和屬性目標(必須是DependencyProperty
)。 例如TextBox
類的TextProperty
是DataBound到(說)UserName
視圖模型的屬性。 WPF綁定提供了四種類型的綁定。請記住,綁定在UI線程上運行,除非您指定它以其他方式運行。
- 單向:該目標屬性會聽源屬性被更改,並會自動更新。如果以編程方式更改ViewwModel的
UserName
屬性,它將反映在文本框中。這是中間成本,因爲綁定系統僅針對來源進行更改。 - 雙向:target屬性會聽源屬性被更改,並會自動更新。 AND source屬性將偵聽正在更改的目標屬性並將自行更新。
TextProperty
和UserName
屬性都將保持同步,並且會在更改時互相更新。這是最昂貴的,因爲綁定系統必須觀察雙方的變化。 - OneWayToSource:如果目標屬性更改Source屬性會發生變化。如果用戶更改
TextProperty
,則UserName
屬性將佔用更改的值。這也是中間成本,因爲綁定系統僅針對目標進行更改。 - 一次性:此結合,在目標屬性將與源時綁定發生更新財產一生中只發生一次。這種方法成本最低,適用於需要顯示靜態數據的情況。
Label
,TextBlock
等
如果你不提任何東西,每目標財產具有的與其自身相關的默認綁定模式。例如。 TextBox
的TextProperty
的默認綁定模式爲TwoWay
。對於TextBlock
的TextProperty
這是一種方式。
您選擇合適的模式,因爲它可以幫助你減少特別是在你有你的UI大量的控制情況下的應用程序延遲這是不可取的。
更多關於MVVM here是我寫的一篇文章。
相關問題
- 1. WPF綁定產生各種控件
- 2. 各種MaxMind GeoIP緩存模式的功能是什麼?
- 3. 什麼是這種模式
- 4. 各種JS模板;爲什麼兩個{?
- 5. 以各種各樣的方式綁定成員函數
- 6. 這個WPF綁定是什麼意思?
- 7. WPF綁定默認模式
- 8. 什麼是3種綁定上下文?
- 9. 什麼是各種AccuRev版本號?
- 10. 什麼是cx_Freeze和Python的各種build_exe_options?
- 11. 是什麼各種Web服務器
- 12. WPF Programaticlly綁定兩種方式
- 13. 什麼是模擬各種用戶接入
- 14. 這種模式的名稱是什麼?
- 15. 這種模式的名字是什麼?
- 16. 這種模式的名稱是什麼?
- 17. 定義腳本的各種方式有什麼不同?
- 18. 各種剪貼板/拖放格式的含義是什麼?
- 19. 我可以處理未來[Option [user]]的各種模式是什麼?
- 20. 什麼是可用的方式來處理各種模型的軌道狀態
- 21. 採用JSON並分配給各種屬性/ innerHTML的好模式是什麼?
- 22. 各種WCF綁定使用什麼特定端口進行通信?
- 23. wpf綁定的種類
- 24. 各種格式的設計模式
- 25. 爲什麼WPF綁定以兩種不同的方式處理INotifyPropertyChanged?
- 26. 這種模式叫什麼?
- 27. 這種模式叫什麼?
- 28. 這種模式叫什麼?
- 29. 什麼是聲明式數據綁定?
- 30. WPF - MVVM - 各種視圖創建技術的優缺點是什麼?
謝謝。這是有幫助的... 但PLZ指定TwoWay的例子...我想知道它如何反映代碼隱藏。 – 2010-02-21 08:27:47
@DATT:「指定」是什麼意思?基本上,如果在XAML中設置Mode = TwoWay,當您更改GUI值時,它將自動更新C#屬性。但是您的代碼隱藏屬性需要在實現INotifyPropertyChanged接口的類(如ViewModel)中實現。當代碼隱藏通過設置更改屬性的值時,您需要調用PropertyChanged,以便通知GUI該值更改,並自動更新它自己。 – Dave 2010-02-21 21:45:33
如果您未指定任何內容,則行爲將取決於您正在使用的「屬性」。 – sam 2016-03-21 08:35:36