1. 程式人生 > >WPF資料繫結之4種繫結模式

WPF資料繫結之4種繫結模式

在使用Binding類的時候有4中繫結模式可以選擇

BindingMode

TwoWay 導致對源屬性或目標屬性的更改可自動更新對方。此繫結型別適用於可編輯窗體或其他完全互動式 UI 方案。
OneWay 當繫結源(源)更改時,更新繫結目標(目標)屬性。如果要繫結的控制元件為隱式只讀控制元件,則適用此繫結型別。例如,可以繫結到如股市代號之類的源。或者,可能目標屬性沒有用於進行更改(例如表的資料繫結背景色)的控制元件介面。如果不需要監視目標屬性的更改,則使用 OneWay 繫結模式可避免 TwoWay 繫結模式的系統開銷。
OneTime 當應用程式啟動或資料上下文更改時,更新繫結目標。此繫結型別適用於以下情況:使用當前狀態的快照適合使用的或資料狀態實際為靜態的資料。如果要從源屬性初始化具有某個值的目標屬性,並且事先不知道資料上下文,則也可以使用此繫結型別。實質上,這是 OneWay
繫結的較簡單的形式,它在不更改源值的情況下可提供更好的效能。
OneWayToSource 當目標屬性更改時更新源屬性。
Default 使用繫結目標的預設 Mode 值。每個依賴項屬性的預設值都不同。一般情況下,使用者可編輯控制元件屬性(例如文字框和複選框的屬性)預設為雙向繫結,而多數其他屬性預設為單向繫結。確定依賴項屬性繫結在預設情況下是單向還是雙向的程式設計方法是:使用 GetMetadata 來獲取屬性的屬性元資料,然後檢查 BindsTwoWayByDefault 屬性的布林值。

使用 Mode 屬性指定繫結的方向。以下列舉列表列出了可供繫結更新的選項:

  • 無論是目標屬性還是源屬性,只要發生了更改,TwoWay

    就會更新目標屬性或源屬性。

  • OneWay 僅當源屬性發生更改時更新目標屬性。

  • OneTime 僅當應用程式啟動時或 DataContext 進行更改時更新目標屬性。

  • OneWayToSource 在目標屬性更改時更新源屬性。

  • Default:使用目標屬性的預設 Mode 值。

仍然使用上個文章中的文字框,標籤控制元件,以及滾動條來說明繫結模式不同

1。使用twoway方式繫結以後,如果手動更改textbox的值,此時如果通過按鈕事件來檢視滾動條的value值,就會發現和textbox是一致

2。oneway方式,就是滾動條改變的時候會改變文字框的顯示值,但是文字框更改的時候不會更改滾動條的值

3。onetime方法,會發現文字框的值會是滾動條的初始值。而且不會變化

4。onewaytosource。就是文字框更改的時候會改變源的屬性。這個時候其實資料來源和資料目標已經顛倒過來了

5。default方式,這個方式完全就是根據控制元件的屬性來設定的。有的屬性適合twoway方式,比如互動的UI控制元件,有點只能oneway方式