您好,登錄后才能下訂單哦!
Silverlight數據綁定引擎
(1)Silverlight中數據綁定基于Silverlight數據綁定引擎,
(2)該綁定引擎實現從UI元素到CLR源數據對象之間的關聯,創建并維護兩者之間的數據通道。
(3)通過該綁定引擎,將CLR源數據對象包含的數據反映到UI元素,并可以將UI中對數據的更改反饋回源數據對象。
一次數據綁定包含兩個最基本的要素:
(1) 綁定目標(FrameworkElement的依賴項屬性)
(2) 綁定源(對象的屬性)
綁定源 |
即數據的來源,可以是任意的CLR對象,通常實際需要的是該對象的某一個特定屬性. |
綁定目標 |
顯示數據的UI元素,可以是任何FrameworkElement類型的對象,實際綁定的也是該對象的某一個特定屬性。 |
綁定模式 |
主要決定數據流的方向,可以是單向或雙向。 |
值轉換器 |
需要時用以進行數據類型或格式的轉換 |
以下是Binding對象的幾個重要屬性:
(1)path |
指定綁定源對象中用以提供數據的屬性,通過屬性路徑語法來表示 |
(2)Mode |
指示數據綁定模式,可以為OneTime、OneWay、TwoWay |
(3)Converter |
值轉換器對象,需要時設置,必須是一個IValueConverter接口類型的對象 |
(4)設置綁定源 |
有四種方法: 1、 Source:表示綁定源對象。 2、 RelativeSource:通過指定綁定源相對于綁定目標的位置來標識綁定源 3、 ElementName:當綁定源也是UI對象時,獲取或設置其名稱用以標識綁定源 4、 通過設置UI元素的DataContext屬性來指定綁定源,上下文的表示方法 |
綁定目標通過UI元素的SetBinding方法來進行設置(當然也可以在XAML中直接指定)。
三種模式的數據綁定。
OneTime |
單向一次綁定,在綁定創建時使用源數據更新目標,適用于只顯示數據而不進行數據的更新(只在綁定創建時更新一次數據源,之后綁定目標的顯示將與綁定源的變化無關) |
OneWay |
單向綁定,在綁定創建時或者源數據發生變化時更新到目標,適用于顯示變化的數據(綁定創建時及之后綁定源的每一次變化都會更新綁定目標。) |
TwoWay |
雙向綁定,在任何時候都可以同時更新源數據和目標。(數據在綁定源與綁定目標之間可相互流動,源與目標任一方的變化都會立即通知到對方并引發對方的更新,雙方是實時同步的。) |
注意:當選擇OneWay或TwoWay模式時,為了是綁定源的變化能實時通知到綁定目標,源對象中必須實現INotifyPropertyChanged接口。也就是綁定目標的顯示與綁定源同步,必須滿足兩個條件:
(1) 選擇OneWay或TwoWay模式
(2) 綁定源實現INotifyPropertyChanged接口
public class Employee:INotifyPropertyChanged { /*public int Number { get; set; } //員工號 public string Name { get; set; } //姓名 public string Sex { get; set; } //性別 public int BirthYear { get; set; } // 出生年份*/ public event PropertyChangedEventHandler PropertyChanged; private int number; public int Number { get { return number; } set { this.number = value; INotifyPropertyChanged("Number"); } } private string name; public string Name { get { return name; } set { this.name = value; INotifyPropertyChanged("Name"); } } //sex birthYear相同代碼 private void INotifyPropertyChanged(string propertyName) { //throw new NotImplementedException(); if (PropertyChanged != null) { PropertyChanged(this,new PropertyChangedEventArgs(propertyName)); } } } |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。