WPF数据绑定(要是后台类对象的属性值发生改变,通知在“client界面与之绑定的控件值”也发生改变须要实现INotitypropertyChanged接口)
MainWindow.xaml
MainWindow.xaml.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace WpfApplication1{ ////// MainWindow.xaml 的交互逻辑 /// public partial class MainWindow : Window { Person p1 = new Person(); public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { p1.Name = "李大钊"; p1.Age = 28; txtName.DataContext = p1; txtAge.DataContext = p1; } private void button1_Click(object sender, RoutedEventArgs e) { p1.Age++; } private void button2_Click(object sender, RoutedEventArgs e) { MessageBox.Show((p1.Age).ToString()); } }}
Model
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.ComponentModel;namespace WpfApplication1{ ////// INotifyPropertyChanged接口是向client发出某一属性值已经更改的通知 /// INotifyPropertyChanged是.net内置的接口,数据绑定DataContext是否实现了INotityPropertyChanged接口,假设实现了,就会监听PropertyChanged得知属性的变化 /// 假设要求后台对象的值发送改变,界面的值也跟着变,则须要实现INotityPropertyChanged接口。而且在对象属性值变化后触发事件 /// 假设说后台对象的值会不变,则没有必要实现这个接口 /// public class Person:INotifyPropertyChanged { private string name; public string Name { get { return name; } set { this.name = value; if (PropertyChanged != null) { //假设Name属性发生了改变,则触发这个事件 PropertyChanged(this, new PropertyChangedEventArgs("Name")); } } } private int age; public int Age { get { return age; } set { this.age = value; //假设有人(数据绑定的对象来监听的)监听这个事件(假设有人监听就是不等于null,假设没人监听这个事件就等于null) if (PropertyChanged != null) { //假设Age属性发生了改变,则触发这个事件 PropertyChanged(this,new PropertyChangedEventArgs("Age")); } } } public event PropertyChangedEventHandler PropertyChanged; }}