• 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;

  • 相关阅读:
    什么叫大数据,与云计算有何关系
    未来机器时代 马云担心的居然是男性找不到工作
    浏览器原生登陆验证实现
    eclipse-java-style.xml
    tomcat和应用集成
    简单springboot及springboot cloud环境搭建
    maven module
    maven scope
    java ReentrantLock Condition
    抓取动态网页
  • 原文地址:https://www.cnblogs.com/626498301/p/Teery.html
Copyright © 2020-2023  润新知