Xamarin.Forms 第13局:資料繫結
ofollow,noindex">總目錄
前言
本文介紹資料繫結:
一、繫結到元素
二、繫結到非元素
環境
1.Visual Studio 2017
2.Xamarin.Froms 4.0.0.8055-pre1
4.約定:XF代表Xamarin.Forms
內容
一、繫結到元素
這裡的元素是Xaml中的控制元件,佈局,頁等可見物件。
實現效果

Xaml方式

1.資料繫結是連線兩個物件之間一對屬性,修改某一個屬性另一個屬性會自動跟著更改。
2.資料繫結的兩個重要概念:
- 源:資料繫結引用的物件或屬性,即:資料的來源;
- 目標:資料繫結設定的物件或屬性。即:資料的去向。
3.本例中,四個控制元件實現了元素與元素之間的繫結,涉及以下知識點:
- 基本繫結
- 繫結路徑
- 字串格式設定
- 繫結模式
4.基本繫結:在Xaml中繫結通常有兩種寫法:
- (1)繫結上下文方式:通過設定BindingContext繫結。例如:本例中,label1設定BindingContext為slider,然後在Text中設定Bing的Path為Value屬性,實現了在Text中顯示slider的Value屬性的值,當slider滑塊滑動時,Text值會跟隨變化。
- (2)直接繫結方式:直接在可繫結的屬性上進行繫結。例如:本例中,label2在Text屬性中直接設定Source為slider,Path為Value,實現與label1同樣的效果。
兩種方式的區別:觀察一下sliderTwo控制元件,可知,在使用繫結上下文方式時,Slider控制元件中其它屬性需要繫結時,我們可直接寫入要繫結的屬性;若使用直接繫結方式,則需要在每個屬性中設定Source。
本例中,Slider是繫結源,Label是繫結目標。
5.繫結路徑:本例中,Binding的Path屬性(其實是Binding擴充套件標記屬性)設定為單屬性。它也可以是設定到子屬性(屬性的屬性),或設定為集合的成員,在下面繫結到非元素小節再作介紹。
6.字串格式設定:以 StringFormat='當前值:{0:F1}'} 為例進行說明:
- 用一對單引號('')進行包裹格式化的字串,主要是為了不與外面的雙引號衝突;
- 單引號中{}外的文字及字元會原樣輸出;
- {0}代表佔位符,代表當前繫結到的字串;
- {0:F1},冒號後面的F1,代表保留1為小數;
- 常用的還有格式化日期用法,在下一小節展示。
7.繫結模式:指資料在源與目標之間的傳輸方式,有以下幾種:
- Default:控制元件預設模式,不同控制元件有不同的繫結模式,但均在下面四種之內;
- TwoWay:資料在源和目標之間雙向傳輸;
- OneWay:資料從源到目標單向傳輸;
- OneWayToSource:資料從目標到源單向傳輸;
- OneTime:只有在BindingContext更改時,資料才從源到目標單向傳輸。
C#方式

一、繫結到非元素
這裡的非元素是指一些非可見的物件。
實現效果

實現方式







1.簡單繫結:可以看到繫結的屬性(即Path的值),可以是簡單屬性,子屬性,集合索引方式。繫結到集合可以在集合繫結中看到ItemSource繫結到集合Students。
2.命令繫結:以命令的方式代替了點選事件。
3.集合繫結:將集合繫結到ListView的ItemSource。
4.屬性通知:通知屬性發生變化,若無屬性通知,那麼點選按鈕時,點選次數的值不會重新整理。屬性通知的寫法固定,類實現INotifyPropertyChanged介面,然後將屬性通知的程式碼放入即可。
5.說明:首先將DataBindingPage頁面的BindingContext設定為DataBindingPageViewModel的例項,這樣,才能在頁面中Binding到該例項的屬性,命令和集合。
後語
下篇介紹資源樣式,待續...