为什么我必须在 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}"/>
我有一个比较简单的问题,我不明白。假设我指定了一个 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}"/>