添加一个Student类:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; namespace TestBinding { class Student:INotifyPropertyChanged//实现这个接口,让Binding自动监听 { public event PropertyChangedEventHandler PropertyChanged; private string name; public string Name { get { return name; } set { name = value; //激发事件 if (this.PropertyChanged != null) { this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name")); } } } } }
XAML:
<Window x:Class="TestBinding.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="110" Width="300"> <Grid> <StackPanel> <TextBox x:Name="textBoxName" BorderBrush="Black" Margin="5"></TextBox> <Button Content="Add Age" Margin="5" Click="Button_Click"></Button> </StackPanel> </Grid> </Window>
C#:
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 TestBinding { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { Student stu; public MainWindow() { InitializeComponent(); /* //准备数据源 stu = new Student(); //准备Binding Binding binding = new Binding(); binding.Source = stu; binding.Path = new PropertyPath("Name"); //使用Binding连接数据源与Binding目标 BindingOperations.SetBinding(textBoxName, TextBox.TextProperty, binding); */ //以上三合一的做法: this.textBoxName.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = stu = new Student() }); } private void Button_Click(object sender, RoutedEventArgs e) { stu.Name += "Name"; } } }
截图: