溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

WP7數(shù)據(jù)綁定

發(fā)布時間:2020-06-16 17:17:28 來源:網(wǎng)絡(luò) 閱讀:3067 作者:HDDevTeam 欄目:編程語言

WP7數(shù)據(jù)綁定

基本描述:

         基于silverlightwindows 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ù)對象中反映出來,它的基本過程如圖:

WP7數(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ù)組,也可以將實體直接寫到AppResource中,這個可以根據(jù)實際需要,對于比較大的項目建議采用后面兩種方法,這樣便于以后對項目進(jìn)行維護(hù),這里面寫的是一個簡單的實體類

  1. public class Item  
  2.  
  3. {  
  4.         public ImageSource Img { setget;}  
  5.         public string EventType { setget;}  
  6.         public string Note { setget; }  
  7. }  
  8.  

2.     *.xmal中利用Binding對象設(shè)置數(shù)據(jù)綁定

我們還可以給ListBox指定列表項的模板ItemTemplate,讓它顯示的比較整齊美觀

 

  1. <ListBox Height="595" HorizontalAlignment="Left" Margin="0,6,0,0" Name="listBox1" VerticalAlignment="Top" Width="460" >  
  2.  
  3.     <ListBox.ItemTemplate>  
  4.  
  5.           <DataTemplate>  
  6.  
  7.                <StackPanel Orientation="Horizontal">  
  8.  
  9.                       <Image  Height="84" Source="{Binding Img}" Width="81" HorizontalAlignment="Left" VerticalAlignment="Top" />   <!—通過Image的Source屬性將上面定義的數(shù)據(jù)實體Img綁定到Image上-->  
  10.  
  11.                 <StackPanel Orientation="Vertical">  
  12.  
  13.                     <TextBlock Text="{Binding EventType}" FontSize="48"  VerticalAlignment="Top" />   <!—通過TextBlock的Text屬性將上面定義的數(shù)據(jù)實體EventType綁定到TextBlock上-->                       
  14.  
  15.                     <TextBlock Text="{Binding Note}" FontSize="24"  VerticalAlignment="Center" />     <!—同上,通過TextBlock的Text屬性將上面定義的數(shù)據(jù)實體Note綁定到TextBlock上-->  
  16.  
  17.                 </StackPanel>  
  18.  
  19.             </StackPanel>        
  20.  
  21.         </DataTemplate>                  
  22.  
  23.      </ListBox.ItemTemplate>                   
  24.  
  25. </ListBox>            
  26.  

3.     后臺*.xmal.cs中定義數(shù)據(jù)源:

  1. public partial class MainPage : PhoneApplicationPage  
  2.  
  3.     {  
  4.  
  5.         // Constructor  
  6.         public MainPage()  
  7.  
  8.         {   
  9.             InitializeComponent();  
  10.         }  
  11.  
  12.         private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)  
  13.  
  14.         {  
  15.  
  16.             List<Item> list=new List<Item>();//創(chuàng)建一個Item的對象集合  
  17.   
  18.             Item item=new Item();           
  19.             item.Img = new BitmapImage(new Uri("ic_sleep.png", UriKind.Relative));   
  20.             item.EventType = "sleep";  
  21.             item.Note = "9:00~10:30";   
  22.             list.Add(item);  
  23.   
  24.             item = new Item();   
  25.             item.Img = new BitmapImage(new Uri("ic_breastfed.png", UriKind.Relative));   
  26.             item.EventType = "breastfed";  
  27.             item.Note="10:40~10:55";  
  28.             list.Add(item);  
  29.   
  30.             item=new Item();   
  31.             item.Img = new BitmapImage(new Uri("ic_diaper.png", UriKind.Relative));  
  32.             item.EventType = "Diaper";  
  33.             item.Note = "Haha";  
  34.             list.Add(item);   
  35.  
  36.             item = new Item();  
  37.             item.Img = new BitmapImage(new Uri("ic_growth.png", UriKind.Relative));  
  38.             item.EventType = "Growth";  
  39.             item.Note = "Happy";  
  40.             list.Add(item);
  41.  
  42.             listBox1.ItemsSource = list;  //將list集合中的數(shù)據(jù)對象添加到ListBox控件的對應(yīng)的列表項中  
  43.  
  44.         }  
  45.  
  46.     }  
  47.  
  48. }  
  49.  

運(yùn)行效果:

WP7數(shù)據(jù)綁定

說明:

         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é)一下,希望不對的地方大家多多給予指正~~

 

 

向AI問一下細(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)容。

AI