通知项熟悉、数据绑定
using System.ComponentModel;
namespace Demo6
{
/// <summary>
/// 通知项属性
/// </summary>
public class Student : INotifyPropertyChanged
{
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"));
}
}
}
}
}
using System.ComponentModel;
namespace Demo6
{
public class MainWindowModele : INotifyPropertyChanged
{
private string _name = "张三";
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
public MainWindowModele()
{
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
<Window x:Class="Demo6.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <StackPanel> <!--绑定是一种自动机制--> <TextBox x:Name="txtTest" Text="{Binding Name,Mode=TwoWay}" Margin="5"/> <Button x:Name="btnTest" Margin="10" Width="75" Height="50" Content="add age" Click="btnTest_Click"/> <TextBox x:Name="txtTest2" Text="{Binding ElementName=txtTest,Path=Text, Mode=TwoWay}" Margin="5"/> <TextBox x:Name="txtTest3" Text="{Binding ElementName=txtTest2,Path=Text, Mode=TwoWay}" Margin="5"/> </StackPanel> </Window>
using System.Windows; namespace Demo6 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { private Student stu = new Student(); public MainWindow() { InitializeComponent(); MainWindowModele mwm = new MainWindowModele(); this.DataContext = mwm; //方式一 //Binding b = new Binding(); //b.Source = stu; //b.Path = new PropertyPath("Name"); //BindingOperations.SetBinding(this.txtTest,TextBox.TextProperty,b); //方式二 // this.txtTest.SetBinding(TextB.Te//xtProperty, new Binding("Name") { Source = stu = new Student() }); } private void btnTest_Click(object sender, RoutedEventArgs e) { stu.Name += "110"; } } }
