对此已有疑问,但他们没有回答我的问题。 例如:
<ContentControl.Resources>
<DataTemplate DataType="{x:Type Databinding:RedScreenViewModel}" >
<Databinding:RedScreen DataContext="{Binding}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type Databinding:BlueScreenViewModel}">
<Databinding:BlueScreen DataContext="{Binding}" />
</DataTemplate>
</ContentControl.Resources>
正如您所看到的,我正在尝试为创建的View设置DataContext,希望它将使用用于创建它的ViewModel。但是当我单步执行代码时,DataContext始终为null。我怎样才能实现我的目标? 谢谢
答案 0 :(得分:9)
如果为ViewModel类定义了一个DataTemplate
,其中包含一个View控件,它将自动将DataContext
设置为ViewModel。
这应该有效:
<ContentControl.Resources>
<DataTemplate DataType="{x:Type Databinding:RedScreenViewModel}">
<Databinding:RedScreen />
</DataTemplate>
<DataTemplate DataType="{x:Type Databinding:BlueScreenViewModel}">
<Databinding:BlueScreen />
</DataTemplate>
</ContentControl.Resources>