
数据绑定提供了一种数据呈现与交互的简捷方式,使得数据与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代码。 在属性面板中单击属性右侧的小图标,会d出菜单,如图4-1所示: 图4-1 在d出菜单中选择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,12,0"><ListBox Height="297" ItemsSource="{Binding}" HorizontalAlignment="left" margin="35,35,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://www.voidcn.com/article/p-zemyqrow-ps.html
总结以上是内存溢出为你收集整理的wp7数据绑定全部内容,希望文章能够帮你解决wp7数据绑定所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)