1. 程式人生 > 其它 >C# WPF的Binding使用說明

C# WPF的Binding使用說明

1、繫結模型的理解

每個繫結都始終遵循下圖所示的模型:

每個繫結都具有四個要素:繫結目標物件、目標屬性、繫結源物件,以及要使用的繫結源中的值的路徑

下面以一個例子來分析一下,如下所示,將一個文字輸入框和一個叫Name的屬性繫結起來:

 <TextBox Margin="10" Height="50" Text="{Binding Path=Name, Mode=TwoWay}" ></TextBox>
<!--Input1是定義在Employee這個類物件中的屬性,這裡就不把Employee寫出來了-->

繫結目標物件:TextBox

目標屬性:Text

繫結源物件:Employee物件(即Name這個屬性所在的位置)

繫結源的值的路徑:Name,也可以理解為將哪個值繫結到目標屬性上

2、Mode模式使用說明

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

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

下面採用一個例子進行說明:將TextBox的文字和Slider的滑塊繫結到一起:

1             <TextBox Margin="10" Height="50" Text="{Binding Path=Value ,ElementName=slider }"></TextBox>
2             <Slider  Minimum="0" Maximum="100" IsSnapToTickEnabled="True" BorderThickness="1"  Name="slider" Margin="10" Height="50" />

1、Default:Texbox與slider的值變化會互相改變對方

2、TwoWay:對於TextBox來說Default的預設方式就是Default。所以效果同上。

3、OneWay:slider變化會改變TextBox文字,但是TextBox值變化不會反映到slider上

4、OneWayToSource:TextBox值變化會改變slider,但是slider不會改變TextBox


本文來自部落格園,作者:嶽振威,轉載請註明原文連結:https://www.cnblogs.com/yzw123/p/15503559.html