1. 使用窗口类的DataContext
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public string MyProperty { get; set; } = "Test ";
public int MyInt { get; set; } = 123;
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
}
创建窗口2个属性字段,一个字符串属性,一个整型属性。
this.DataContext = this; 窗口界面就使用这个2个属性值的绑定。
窗口创建2个文本,绑定到属性字段。
<Grid>
<StackPanel>
<TextBox FontSize="48" Text="{Binding MyProperty}"/>
<TextBox FontSize="48" Text="{Binding MyInt}"/>
</StackPanel>
</Grid>
效果如下:
2. 创建一个类,将类的实例赋值到DataContext
public class Student
{
public string Name { get; set; } = "Josh";
public int Id { get; set; } = 1002;
}
public MainWindow()
{
InitializeComponent();
Student std = new Student();
this.DataContext = std;
}
前台UI代码创建绑定:
<Grid>
<StackPanel>
<TextBox FontSize="48" Text="{Binding Id}"/>
<TextBox FontSize="48" Text="{Binding Name}"/>
</StackPanel>
</Grid>
效果如下:
3. 创建界面子元素的DataContext 属性绑定
再添加一个类:
public class Employee
{
public int Id { get; set; } = 1001;
public string Name { get; set; } = "Mike";
}
界面设计绑定:
<Grid>
<StackPanel >
<StackPanel.DataContext>
<local:Employee x:Name="Emp"></local:Employee>
</StackPanel.DataContext>
<TextBox FontSize="48" Text="{Binding Id}"/>
<TextBox FontSize="48" Text="{Binding Name}"/>
<StackPanel>
<StackPanel.DataContext>
<local:Student x:Name="Stu"></local:Student>
</StackPanel.DataContext>
<TextBox FontSize="48" Text="{Binding Id}"/>
<TextBox FontSize="48" Text="{Binding Name}"/>
</StackPanel>
</StackPanel>
</Grid>
效果如下:
当然类的属性值时可以动态变化的,所以绑定的值也动态可变的。