http://www.cnblogs.com/ceachy/archive/2012/10/30/Binding_DataContext.html
方法一:
1、如果没有显式设置上下文,那么数据上下文就是界面;
例如下边代码,textBox1绑定textBlock2的Text属性的时候,数据上下文就是Grid或者Grid父容器的DataContext,上下文中能用到就是界面元素的属性。
<
Grid
>
<
TextBox
Height="23" HorizontalAlignment="Left" Margin="123,30,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="{Binding Path=MyValue}" />
<
TextBlock
Height="23" HorizontalAlignment="Left" Margin="54,77,0,0" Name="textBlock2" Text="Luke" VerticalAlignment="Top" />
</
Grid
>
|
2、可以在任何时候显式设置上下文,但是设置上下文以后绑定才会有效。
设置方法是ctlId.DataContext = xxx,例如grid1.DataContext = this;
3、可以在XAML中设置上下文
在XAML中设置DataContext,有三点要设置:1)引用namespace;2)设置Resources;3)设置DataContext。如下代码所示:
<
Window
x:Class="WpfAppDemo1.MainWindow"
<span style="color: #ff0000;">xmlns:c="clr-namespace:WpfAppDemo1"
</
span
> Title="MainWindow" Height="350" Width="525">
<
Grid
Name="grid1">
<
span
style="color: #ff0000;"> <
Grid.Resources
>
<
c:MyData
x:Key="myData1" />
</
Grid.Resources
>
<
Grid.DataContext
>
<
Binding
Source="{StaticResource myData1}" />
</
Grid.DataContext
>
</
span
> <
TextBox
Height="23" HorizontalAlignment="Left" Margin="123,30,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="{Binding Path=<span style="color: #ff0000;">MyName</
span
>}" />
</
Grid
>
|
方法二:可以直接在xaml页面后台的构造函数中直接设置DataContext,例如
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainWindowViewModel();
}