为什么我必须在 ContentControl 中设置内容?

Why do I have to set the content in ContentControl?

我有一个比较简单的问题,我不明白。假设我指定了一个 ContentControl 和一个 ContentTemplate,我想执行以下操作:

<ContentControl ContentTemplate="{StaticResource UserView}" DataContext="{Binding User}" />

然而令我惊讶的是,这完全失败了,而下面的行却完美地工作:

<ContentControl ContentTemplate="{StaticResource UserView}" Content="{Binding User}" />

仔细检查后,第一行给出了令人惊讶的 null 作为其 DataContext,而后一行具有正确的 DataContext。

谁能给我解释一下这是怎么回事?

谢谢你所做的一切!

我认为在第一个示例中 Content 属性 是空的,所以你应该这样做

<ContentControl ContentTemplate="{StaticResource UserView}" Content="{Binding}" DataContext="{Binding User}" />

我想你绑定到 属性 User 定义的是一些 ViewModel。比你不必设置 DataContext:

<ContentControl ContentTemplate="{StaticResource UserView}" Content="{Binding}" DataContext="{Binding User}" />

更常见的写法是:

<ContentControl ContentTemplate="{StaticResource UserView}" Content="{Binding User}"/>