当数据源所包含的类型实现 INotifyPropertyChanged 接口时, BindingSource 组件将自动检测数据源中的更改,并在更改属性值时引发 PropertyChanged 事件。 此功能非常有用,因为绑定到 BindingSource 的控件随后可以随着数据源值的更改而自动更新。

1、定义Person类,并定义属性;

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.ComponentModel;
 6 
 7 namespace _0401
 8 {
 9     class Person
10     {
11         public string Name { get; set; }
12         public int Age { get; set; }
13     }
14 }
View Code

 2、创建Person类的实例,并给属性赋值。

 1         Person p1 = new Person();
 2         Person p2 = new Person();
 3         
 4         private void Window_Loaded(object sender, RoutedEventArgs e)
 5         {
 6             p1.Name = "张三";
 7             p1.Age = 31;
 8             txtName.DataContext = p1;
 9             txtAge.DataContext = p1;
10         }
View Code

3、在XMAL中将控件绑定已经定义的属性,把控件的Text属性绑定到其DataContent指向对象的属性上。

 1 <Window x:Class="_0401.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         Title="主界面" Height="350" Width="525" WindowStartupLocation="CenterScreen" 
 5         WindowState="Maximized" ResizeMode="CanMinimize" Loaded="Window_Loaded">
 6     <Grid Name="grid1">
 7         <TextBox Name="txtName" Text="{Binding Name}" Height="23" HorizontalAlignment="Left" Margin="78,39,0,0" VerticalAlignment="Top" Width="120" />
 8         <TextBox Name="txtAge" Text="{Binding Age}" Height="23" HorizontalAlignment="Left" Margin="82,84,0,0" VerticalAlignment="Top" Width="120" />
 9         <Label Content="姓名" Height="28" HorizontalAlignment="Left" Margin="21,39,0,0" Name="label1" VerticalAlignment="Top" />
10         <Label Content="年龄" Height="28" HorizontalAlignment="Left" Margin="21,79,0,0" Name="label2" VerticalAlignment="Top" />
11         <Button Content="Age++" Height="23" HorizontalAlignment="Left" Margin="218,37,0,0" Name="btnAddAge" VerticalAlignment="Top" Width="75" Click="btnAddAge_Click" />
12         <Button Content="显示年龄" Height="23" HorizontalAlignment="Left" Margin="218,84,0,0" Name="btnAgeShow" VerticalAlignment="Top" Width="75" Click="btnAgeShow_Click" />
13     </Grid>
14 </Window>
View Code

4、实现接口

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.ComponentModel;
 6 
 7 namespace _0401
 8 {
 9     class Person:INotifyPropertyChanged
10     {
11         public string Name { get; set; }
12 
13         private int age;
14         public int Age 
15         { 
16             get{ return age;}
17             set
18             {
19                 this.age = value;
20                 if (PropertyChanged != null)
21                 {
22                     PropertyChanged(this,new PropertyChangedEventArgs("Age"));
23                 }
24             }
25         }
26 
27         public event PropertyChangedEventHandler PropertyChanged;
28     }
29 }
View Code

 

posted on 2014-03-02 19:51  恩恩爸爸  阅读(171)  评论(0)    收藏  举报