Binding是WPF经常用到的地方,注意和staticsource的区分。
一、没有Source的Binding,使用DataContext作为Binding的Source
1. 方式一
Student类后台:
public class Student
{
public string Name { get; set; }
public int Height { get; set; }
public int Weight { get; set; }
}
xmal:
<Grid x:Name="rootLayout">
<StackPanel>
<StackPanel.DataContext>
<local:Student Name="张三" Height="170" Weight="70"/>
</StackPanel.DataContext>
<TextBlock x:Name="StudentName" Text="{Binding Path=Name}"/>
<TextBlock x:Name="StudentHeight" Text="{Binding Path=Height}"/>
<TextBlock x:Name="StudentWeight" Text="{Binding Path=Weight}"/>
</StackPanel>
</Grid>
2. 方式二
类同上;
xaml:
<Grid x:Name="rootLayout">
<StackPanel>
<TextBlock x:Name="StudentName" Text="{Binding Path=Name}"/>
<TextBlock x:Name="StudentHeight" Text="{Binding Path=Height}"/>
<TextBlock x:Name="StudentWeight" Text="{Binding Path=Weight}"/>
</StackPanel>
</Grid>
后台:
Student s = new Student() { Name="张三", Height=170, Weight=70};
rootLayout.DataContext = s;
3.方式三
int,string 等本身就是数据,因此用 Path=. 来表示,在 xaml 中可以省略,在 C# 中不能省略。
<StackPanel>
<StackPanel.DataContext>
<sys:String>Binding Source Demo</sys:String>
</StackPanel.DataContext>
<TextBlock Text="{Binding}"/>
</StackPanel>