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

时间:2015-01-06 11:20:38

标签: wpf binding datacontext contentcontrol

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

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

然而令我惊讶的是,这完全失败了,而以下几行完美无缺:

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

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

有人可以向我解释发生了什么事吗?

感谢您的一切!

2 个答案:

答案 0 :(得分:1)

我认为您绑定到属性User,其定义为ViewModel。比你不必设置DataContext

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

更常见的是写这个:

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

答案 1 :(得分:0)

我认为在第一个示例中,Content Property为null,因此您应该这样做

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