如何从代码隐藏设置 DataContext
How to set DataContext from codebehind
如果我尝试通过 Button_Click
设置我的 DataContext
,child 不会继承它。我在这里想念什么?
简单测试示例:
XAML
<StackPanel>
<Button Content="Add Datacontext"
Height="50" Click="Button_Click"/>
<ContentControl Name="Test"/>
</StackPanel>
代码隐藏
private void Button_Click(object sender, RoutedEventArgs e)
{
Test.DataContext = DateTime.Now;
}
结果
ContentControl
中生成的ContentPresenter
点击后还是null,应该是DateTime
.
您正在设置 ContentControl.DataContext
,其中 Content
是 null
。
先尝试设置实际内容,例如
<ContentControl x:Name="Test">
<!-- this will have DataContext as you expected -->
<TextBlock />
</ContentControl>
ContentControl 的 DataContext 已设置,您正在检查 ContentPresenter within 内容控件...
<ContentControl Name="Test" Content="{Binding}">
会修复它。
如果我尝试通过 Button_Click
设置我的 DataContext
,child 不会继承它。我在这里想念什么?
简单测试示例:
XAML
<StackPanel>
<Button Content="Add Datacontext"
Height="50" Click="Button_Click"/>
<ContentControl Name="Test"/>
</StackPanel>
代码隐藏
private void Button_Click(object sender, RoutedEventArgs e)
{
Test.DataContext = DateTime.Now;
}
结果
ContentControl
中生成的ContentPresenter
点击后还是null,应该是DateTime
.
您正在设置 ContentControl.DataContext
,其中 Content
是 null
。
先尝试设置实际内容,例如
<ContentControl x:Name="Test">
<!-- this will have DataContext as you expected -->
<TextBlock />
</ContentControl>
ContentControl 的 DataContext 已设置,您正在检查 ContentPresenter within 内容控件...
<ContentControl Name="Test" Content="{Binding}">
会修复它。