一、如果没有显式设置上下文,那么数据上下文就是界面
例如下边代码,textBox1绑定textBlock2的Text属性的时候,数据上下文就是Grid或者Grid父容器的DataContext,上下文中能用到就是界面元素的属性。
二、可以在任何时候显式设置上下文,但是设置上下文以后绑定才会有效。
设置方法是ctlId.DataContext = xxx,例如grid1.DataContext = this;
三、可以在XAML中设置上下文
在XAML中设置DataContext,有三点要设置:1)引用namespace;2)设置Resources;
<Window x:Class="WpfAppDemo1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:WpfAppDemo1"
Title="MainWindow" Height="350" Width="525">
<Grid Name="grid1">
<Grid.Resources>
<c:MyData x:Key="myData1" />
</Grid.Resources>
<Grid.DataContext>
<Binding Source="{StaticResource myData1}" />
</Grid.DataContext>
<TextBox Height="23" HorizontalAlignment="Left" Margin="123,30,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="{Binding Path=MyName}" />
</Grid>