WPF學習筆記:資料繫結與DataContext
阿新 • • 發佈:2019-02-05
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();
}