• Sivlerlight中的数据绑定


    关注Silverlight很久了,从1.0看到3.0,也看了不少书,但是在学校里没有接触Sl项目的机会,所以很多知识很容易忘却,其实网上有很多银光的教程,李会军的系列教程我每个都在3.0环境下实现了一遍,说实话还是很喜欢这门技术的,

    时间长了容易忘记,所以把自己看到的记下来,希望能跟银光爱好者们一起交流

    使用标记进行数据绑定

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

    public class Person  
     {      
       public Person() { }      
       public string FirstName { get; set;}      
       public string LastName { get; set; }    
    }

    XAML代码如下:

    <TextBlock Name="textBlock3" Text="{Binding FirstName}" /> 
    
    <TextBlock Name="textBlock4" Text="{Binding LastName}" />

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

    后天代码中:

    public MainPage() 
           { 
               InitializeComponent();         
               Person p=new Person(){FirstName="David",LastName="Green"}; 
               this.textBlock3.DataContext=p; 
               this.textBlock4.DataContext = p;
    
            }

    这样简单的标记数据绑定即完成了。

    在此基础上我们扩展一下,显示分页显示多个Person信息

    XAML需要简单的修改一下:

    <Grid x:Name="PersonalPanel" Background="White"> 
    
    <TextBlock Name="textBlock3" Text="{Binding FirstName}" /> 
    
    <TextBlock Name="textBlock4" Text="{Binding LastName}" /> 
    
    <Canvas Canvas.Left="120">
    
    <Polygon Fill="Black" Points="0,5,10,0,10,10" MouseLeftButtonDown="prev"></Polygon>
    
    <Polygon Fill="Black" Points="15,0,15,10,25,5" MouseLeftButtonDown="next"></Polygon> </Canvas> 
    
    </Grid> 

    后台代码:

     private int pos = -1; 
     private Person[] persons;
     public MainPage()
     { InitializeComponent(); 
     persons = new Person[] { new Person {
     FirstName="David";,LastName="Grenn";},
     new Person{FirstName="Dim";,LastName="Borin"},
     new Person{FirstName="Tom";,LastName="White"}};
     } 
     public void prev(object sender, MouseButtonEventArgs e)
            {
                if (pos > 0)
                    pos--;
                bind();
            }
            public void next(object sender, MouseButtonEventArgs e)
            {
                if (pos < persons.Length - 1)
                    pos++;
                bind();
            }
            private void bind()
            {
                PersonalPanel.DataContext = persons[pos];
            }

    通过代码进行数据绑定

    以上的绑定是在XAML进行声明的,我们也可以改为在后台进行绑定

    XAML代码修改为:

    <TextBlock Name="textBlock3" />

    <TextBlock Name="textBlock4"  />

    后台代码改为:

    public MainPage()
            {
                InitializeComponent();
              
                persons = new Person[] 
                {
                 new Person{FirstName="David",LastName="Grenn"},
                };
                Binding b1 = new Binding();
                b1.Mode = BindingMode.OneTime;
                firstName.SetBinding(TextBlock.TextProperty, b1);
                firstName.DataContext = persons[0].FirstName;
                Binding b2 = new Binding();
                b2.Mode = BindingMode.OneTime;
                lastName.SetBinding(TextBlock.TextProperty, b2);
                lastName.DataContext = persons[0].LastName;
            }

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

        创建绑定:Binding b1 = new Binding();

        设置绑定模式:b1.Mode = BindingMode.OneTime;

        将绑定附加到目标:firstName.SetBinding(TextBlock.TextProperty, b1);

        设置数据上下文:firstName.DataContext = persons[0].FirstName;

  • 相关阅读:
    【(高职专科组)第十一届蓝桥杯省模拟赛答案】给定一个数列,请问找出元素之间最大的元素距离。
    【(高职专科组)第十一届蓝桥杯省模拟赛答案】给定一个数列,请问数列中最长的递增序列有多长。
    POJ 2391 二分+最大流
    HDU 4529 状压dp
    NYOJ 747贪心+dp
    NYOJ 745 dp
    HDU 2686 / NYOJ 61 DP
    HDU 4313树形DP
    HDU 4303 树形DP
    POJ 2342 树形DP
  • 原文地址:https://www.cnblogs.com/626498301/p/Teery.html
Copyright © 2020-2023  润新知