如何从代码隐藏设置 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,其中 Contentnull

先尝试设置实际内容,例如

<ContentControl x:Name="Test">
    <!-- this will have DataContext as you expected -->
    <TextBlock />
</ContentControl>

ContentControl 的 DataContext 已设置,您正在检查 ContentPresenter within 内容控件...

<ContentControl Name="Test" Content="{Binding}">

会修复它。