wp7資料繫結

來源:互聯網
上載者:User

資料繫結提供了一種資料呈現與互動的簡捷方式,使得資料與UI分離,並能自動更新、同步。綁定有繫結目標、繫結來源、繫結模式、轉換器等要素。。繫結目標為Silverlight控制項,可以是FrameworkElement類型的對象,實際上綁定的是該控制項的一個特定屬性。繫結來源為資料對象,也可以是任意的CLR對象。轉換器:進行資料類型或格式的轉換。繫結模式,三種模式的資料繫結。( 1)OneTime:一次綁定,在綁定建立時使用來源資料更新目標,適用於只顯示資料而不進行資料的更新。(2)OneWay:單向綁定,在綁定建立時或者來源資料發生變化時更新到目標,適用於顯示變化的資料。(3)TwoWay:雙向繫結,在任何時候都可以同時更新來源資料和目標。當模式為OneWay或TwoWay時,來源物件必須實現INotifyPropertyChanged介面。繫結來源的方式有:(1) Source:表示繫結來源對象。(2) RelativeSource,指定繫結來源相對於繫結目標的位置來標識繫結來源。(3) ElementName,繫結來源也是UI對象。可以在C#代碼中,也可以在XAML聲明中進行綁定,現列舉常見的幾種綁定方式:(1) 繫結來源為UI對象。通過slider的值來控制矩形控制項圖形的寬度。<Slider Name="slider" Value="20" Maximum="200" /><Rectangle ;{Binding Path=Value,Mode=OneWay,ElementName=slider}" /> 

Mode預設為OneWay, “Path=”也可可省略,因此上式還可簡寫為:<Rectangle ;{Binding Value,ElementName=slider}" />(2)
C#代碼中實現綁定定義資料來源:
Public class Classmate{public string cName{get;set;}public int cAge{get;set;}}

建立同學類的執行個體作為繫結來源:

Public Classmate myClassmate=new Classmate{cName=“王根山“,cAge=”29”};Binding bd=new Binding();Bd.Source= myClassmate;bd.Path=new PropertyPath(“cName”);bd.SetBinding(TextBox.TextProperty,cTextBox);

多個控制項綁定同一資料來源,可統一指定資料來源,用DataContext來實現,原資料來源指派陳述式均可省略。Canvas1.DataContext=
myClassmate;(3) XAML聲明中實現綁定添加命名空間的支援:

xmlns:local="clr-namespace:WindowsPhoneApplication4"

資源項中執行個體化類:

<phone:PhoneApplicationPage.Resources><local:Classmate x:Key="dataClass" cName="萬常山" cAge="28"></local:Classmate></phone:PhoneApplicationPage.Resources>

在XAML中實現綁定:

<TextBox Name=“cTextBox” Text=“{Binding path= cName,Mode=OneWay }” />

也可以如同C#代碼中實現綁定,在C#代碼中定義資料來源:Canvas1.DataContext= myClassmate;(4) 使用資料繫結設計器實現綁定除了C#、XAML來實現綁定,還可藉助於Visual
Studio的視覺化檢視,直接實現綁定,實際是XAML實現綁定的可視化方式,自動產生XAML代碼。在屬性面板中單擊屬性右側的小表徵圖,會快顯功能表,4-1所示:圖4-1在快顯功能表中選擇Apply Data Binding..,會出現資料繫結設計器,可定義Source、Path等屬性,4-2:圖4-2案例4-1:資料繫結實現集合對象的資料繫結,用自訂模板方式實現。(1)建立Windows Phone程式。(2)添加新類Classmate

public class Classmate{public int cId { get; set; }public string cName { get; set; }public int cAge { get; set; }}

(4) XAML頁面綁定代碼如下:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"><ListBox Height="297" ItemsSource="{Binding}" HorizontalAlignment="Left" Margin="35,35,0,0" Name="listBox1" VerticalAlignment="Top" ;357" ><ListBox.ItemTemplate ><DataTemplate ><StackPanel Height="50" HorizontalAlignment="Center" ;480" VerticalAlignment="Top" Orientation="Horizontal" ><TextBlock Height="60" HorizontalAlignment="Left" Text="{Binding cId}" VerticalAlignment="Top" ;100" /><TextBlock Height="60" HorizontalAlignment="Left" Text="{Binding cName}" VerticalAlignment="Top" ;100" /><TextBlock Height="60" HorizontalAlignment="Left" Text="{Binding cAge}" VerticalAlignment="Top" ;100" /></StackPanel></DataTemplate></ListBox.ItemTemplate></ListBox></Grid>

(5) 在C#代碼中定義資料來源:

ObservableCollection<Classmate> classmates=new ObservableCollection<Classmate>{new Classmate {cId=1,cName ="王啟大",cAge=28},new Classmate {cId=2,cName ="萬正領",cAge=25},};public MainPage(){InitializeComponent();listBox1.DataContext = classmates;}

(6)F5運行,效果如下:

本文出自 “藍海戰術”
部落格,請務必保留此出處http://wanxl.blog.51cto.com/2129901/582105

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.