黑马程序员数据绑定

来源:互联网 发布:js修改div属性 编辑:程序博客网 时间:2024/06/14 04:35

黑马程序员数据绑定

----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

 

数据绑定后台对象改变前台界面改变

1.定义类.定义属性

Class Person

{

  Publicstring Name{get;set;}

  Publicint Age{get;set;}

}

2.前台界面如下:


前台数据绑定: XAML中给要进行数据绑定的属性

Text=”{BindingName}”,把控件的Text属性绑定到DataContext指向的p对象的Name属性上

后台代码如下: new 一个类的实例,给要绑定的控件设定DateContexttxtName.DataContext=p;

  3.数据绑定效果如下

但是点击Age++按钮

private voidbtnAdd_Click(object sender, RoutedEventArgs e)

{

    p.Age++;

 }

文本框里的年龄却不会增加

因为普通对象没有”通知我的属性变了”这么一种机制,所以改变对象的属性界面不会变.但是界面改变是有TextChanged之类的事件的,所以改变界面可以同步修改到对象.

 

4.如果要求后台对象的值发生改变界面跟着改变,则需要实现INotifyPropertyChange接口,并且在属性值变化后触发事件.

 

//INotifyPropertyChanged是.net内置接口

//数据绑定会检测DataContext是否实现了INotifyPropertyChanged

//如果实现了,就会监听PropertyChanged的属性变化

//修改Person类

5.添加对INotifyPropertyChanged的引用

using System.ComponentModel;

6.添加对接口的实现

public eventPropertyChangedEventHandler PropertyChanged;

7.修改对Person类对INotifyPropertyChanged接口的继承

修改Age和Name的属性添加age和name字段

class Person:INotifyPropertyChange

{

   privatestring name;

   public string Name

   {

    get

     {

        return name;

     }

     Set

     {

        this.name=value;

        if(PropertyChanged !=null)

          {

            PropertyChanged(this,new ProperyChangedEventArgs(“Name”));

         }

      }

}

private int age;

public int Age

 {

   get

    {

       returnage;

     }

    set

      {

          this.age= value;

           if(PropertyChanged != null)  //响应事件

             {

                PropertyChanged(this,newPropertyChangedEventArgs("Age"));

              }

         }

     }

 

    public event PropertyChangedEventHandlerPropertyChanged;

 

}

8.实现INotifyPropertyChanged接口后的效果

 

如果后台对象的值不会变,则没必要实现

----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net

 

原创粉丝点击