您好,登錄后才能下訂單哦!
WP7數(shù)據(jù)綁定
基于silverlight的windows phone數(shù)據(jù)綁定,它提供了一種數(shù)據(jù)顯示并與數(shù)據(jù)進(jìn)行交互的簡便方法,UI元素和數(shù)據(jù)對象之間的綁定使得數(shù)據(jù)可以在兩者之間進(jìn)行流動,綁定建立之后,如果數(shù)據(jù)出現(xiàn)更改,則綁定到該數(shù)據(jù)的UI元素會自動反映更改,同樣,用戶在UI元素中所做的更改也可以在數(shù)據(jù)對象中反映出來,它的基本過程如圖:
•綁定目標(biāo)是UI控件,控件必須是FrameworkElement的任何一個DependencyProperty(提供快速的方法計算值,可與其他動態(tài)數(shù)據(jù)交互)。
•綁定來源是將要與綁定目標(biāo)進(jìn)行數(shù)據(jù)交互的數(shù)據(jù)。來源可以是任何運(yùn)行于CLR的對象,包括目標(biāo)元素本身或者其他UI元素。
•綁定的語法用大括號表示
<TextBlock Text="{Binding Note}"/>等同于<TextBlock Text="{Binding path= Note}"/>
•三種數(shù)據(jù)流方向:(Mode屬性):
OneTime:一次綁定,在綁定創(chuàng)建時使用源數(shù)據(jù)更新目標(biāo),適用于只顯示數(shù)據(jù)而不進(jìn)行數(shù)據(jù)的更新。
OneWay:單向綁定,在綁定創(chuàng)建時或者源數(shù)據(jù)發(fā)生變化時更新到目標(biāo),適用于顯示變化的數(shù)據(jù)。
TwoWay:雙向綁定,在任何時候都可以同時更新源數(shù)據(jù)和目標(biāo)。
其中默認(rèn)的是OneWay,即后臺數(shù)據(jù)發(fā)生變化,前臺建立了綁定關(guān)系的相關(guān)控件也會進(jìn)行更新
下面我們就針對于LIstBox控件來說明一下綁定的具體實現(xiàn)過程,參考代碼如下:
1. 定義數(shù)據(jù)實體:
可以直接定義一個字符串?dāng)?shù)組,可以新建一個實體類,創(chuàng)建一個該類的對象數(shù)組,也可以將實體直接寫到App的Resource中,這個可以根據(jù)實際需要,對于比較大的項目建議采用后面兩種方法,這樣便于以后對項目進(jìn)行維護(hù),這里面寫的是一個簡單的實體類
- public class Item
- {
- public ImageSource Img { set; get;}
- public string EventType { set; get;}
- public string Note { set; get; }
- }
2. 在*.xmal中利用Binding對象設(shè)置數(shù)據(jù)綁定
我們還可以給ListBox指定列表項的模板ItemTemplate,讓它顯示的比較整齊美觀
- <ListBox Height="595" HorizontalAlignment="Left" Margin="0,6,0,0" Name="listBox1" VerticalAlignment="Top" Width="460" >
- <ListBox.ItemTemplate>
- <DataTemplate>
- <StackPanel Orientation="Horizontal">
- <Image Height="84" Source="{Binding Img}" Width="81" HorizontalAlignment="Left" VerticalAlignment="Top" /> <!—通過Image的Source屬性將上面定義的數(shù)據(jù)實體Img綁定到Image上-->
- <StackPanel Orientation="Vertical">
- <TextBlock Text="{Binding EventType}" FontSize="48" VerticalAlignment="Top" /> <!—通過TextBlock的Text屬性將上面定義的數(shù)據(jù)實體EventType綁定到TextBlock上-->
- <TextBlock Text="{Binding Note}" FontSize="24" VerticalAlignment="Center" /> <!—同上,通過TextBlock的Text屬性將上面定義的數(shù)據(jù)實體Note綁定到TextBlock上-->
- </StackPanel>
- </StackPanel>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
3. 后臺*.xmal.cs中定義數(shù)據(jù)源:
- public partial class MainPage : PhoneApplicationPage
- {
- // Constructor
- public MainPage()
- {
- InitializeComponent();
- }
- private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
- {
- List<Item> list=new List<Item>();//創(chuàng)建一個Item的對象集合
- Item item=new Item();
- item.Img = new BitmapImage(new Uri("ic_sleep.png", UriKind.Relative));
- item.EventType = "sleep";
- item.Note = "9:00~10:30";
- list.Add(item);
- item = new Item();
- item.Img = new BitmapImage(new Uri("ic_breastfed.png", UriKind.Relative));
- item.EventType = "breastfed";
- item.Note="10:40~10:55";
- list.Add(item);
- item=new Item();
- item.Img = new BitmapImage(new Uri("ic_diaper.png", UriKind.Relative));
- item.EventType = "Diaper";
- item.Note = "Haha";
- list.Add(item);
- item = new Item();
- item.Img = new BitmapImage(new Uri("ic_growth.png", UriKind.Relative));
- item.EventType = "Growth";
- item.Note = "Happy";
- list.Add(item);
- listBox1.ItemsSource = list; //將list集合中的數(shù)據(jù)對象添加到ListBox控件的對應(yīng)的列表項中
- }
- }
- }
Windows Phone開發(fā)中大部分控件都可以實現(xiàn)數(shù)據(jù)綁定,在使用Binding對象將數(shù)據(jù)源與UI控件進(jìn)行數(shù)據(jù)綁定之前,建議大家在大致了解綁定過程的基礎(chǔ)上,首先熟悉一下各個控件的相關(guān)屬性及使用方法,這樣可能會使代碼更加簡潔,同時也應(yīng)該掌握一下頁面布局的設(shè)計,使數(shù)據(jù)顯示的效果更加Nice。大家可以自己先寫一個簡單的小例子來實現(xiàn)數(shù)據(jù)綁定,了解綁定的大致過程之后,然后逐漸向周圍的其他控件進(jìn)行擴(kuò)展。目前我自己也是一個WP7的初學(xué)者,學(xué)習(xí)過程中在這里只是小小總結(jié)一下,希望不對的地方大家多多給予指正~~
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。