热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> Silverlight>>正文内容

Sivlerlight中的数据绑定

发布时间:2010年08月13日点击数: 佚名

关注Silverlight很久了,从1.0看到3.0,也看了不少书,但是在学校里没有接触Sl项目的机会,所以很多知识很容易忘却,其实网上有很多银光的教程,李会军的系列教程我每个都在3.0环境下实现了一遍,说实话还是很喜欢这门技术的,
时间长了容易忘记,所以把自己看到的记下来,希望能跟银光爱好者们一起交流

使用标记进行数据绑定

为了方便起见,选择对象作为绑定源 ,新建一个Person类

  1. public class Person   
  2.  {       
  3.    public Person() { }       
  4.    public string FirstName { getset;}       
  5.    public string LastName { getset; }     

XAML代码如下:

  1. <TextBlock Name="textBlock3" Text="{Binding FirstName}" />  
  2.  
  3. <TextBlock Name="textBlock4" Text="{Binding LastName}" /> 

简化起见,删除了样式部分,注意其中Text属性了使用{Binding PropertyName}语法
后边代码中:

  1. public MainPage()  
  2.        {  
  3.            InitializeComponent();          
  4.            Person p=new Person(){FirstName="David",LastName="Green"};  
  5.            this.textBlock3.DataContext=p;  
  6.            this.textBlock4.DataContext = p; 
  7.  
  8.         } 

这样简单的标记数据绑定即完成了。
在此基础上我们扩展一下,显示分页显示多个Person信息
XAML需要简单的修改一下:

  1. <Grid x:Name="PersonalPanel" Background="White">  
  2.  
  3. <TextBlock Name="textBlock3" Text="{Binding FirstName}" />  
  4.  
  5. <TextBlock Name="textBlock4" Text="{Binding LastName}" />  
  6.  
  7. <Canvas Canvas.Left="120"> 
  8.  
  9. <Polygon Fill="Black" Points="0,5,10,0,10,10" MouseLeftButtonDown="prev"></Polygon> 
  10.  
  11. <Polygon Fill="Black" Points="15,0,15,10,25,5" MouseLeftButtonDown="next"></Polygon> </Canvas>  
  12.  
  13. </Grid>  

后台代码:

  1. private int pos = -1;  
  2. private Person[] persons; 
  3. public MainPage() 
  4. { InitializeComponent();  
  5. persons = new Person[] { new Person { 
  6. FirstName="David";,LastName="Grenn";}, 
  7. new Person{FirstName="Dim";,LastName="Borin"}, 
  8. new Person{FirstName="Tom";,LastName="White"}}; 
  9. }  
  10. public void prev(object sender, MouseButtonEventArgs e) 
  11.        { 
  12.            if (pos > 0) 
  13.                pos--; 
  14.            bind(); 
  15.        } 
  16.        public void next(object sender, MouseButtonEventArgs e) 
  17.        { 
  18.            if (pos < persons.Length - 1) 
  19.                pos++; 
  20.            bind(); 
  21.        } 
  22.        private void bind() 
  23.        { 
  24.            PersonalPanel.DataContext = persons[pos]; 
  25.        } 

通过代码进行数据绑定
以上的绑定是在XAML进行声明的,我们也可以改为在后台进行绑定
XAML代码修改为:

  1. <TextBlock Name="textBlock3" /> 
  2. <TextBlock Name="textBlock4"  /> 

后台代码改为:

  1. public MainPage() 
  2.         { 
  3.             InitializeComponent(); 
  4.            
  5.             persons = new Person[]  
  6.             { 
  7.              new Person{FirstName="David",LastName="Grenn"}, 
  8.             }; 
  9.             Binding b1 = new Binding(); 
  10.             b1.Mode = BindingMode.OneTime; 
  11.             firstName.SetBinding(TextBlock.TextProperty, b1); 
  12.             firstName.DataContext = persons[0].FirstName; 
  13.             Binding b2 = new Binding(); 
  14.             b2.Mode = BindingMode.OneTime; 
  15.             lastName.SetBinding(TextBlock.TextProperty, b2); 
  16.             lastName.DataContext = persons[0].LastName; 
  17.         } 

其实很明显分为四个步骤:

  1. Binding b1 = new Binding();//创建绑定 
  2. b1.Mode = BindingMode.OneTime;//    设置绑定模式 
  3. firstName.SetBinding(TextBlock.TextProperty, b1);//    将绑定附加到目标 
  4. firstName.DataContext = persons[0].FirstName;//    设置数据上下文 

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作