如何为ViewModel中的DataTemplate中创建的View设置DataContext

时间:2012-07-04 19:44:04

标签: c# wpf datatemplate datacontext

对此已有疑问,但他们没有回答我的问题。 例如:

 <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。我怎样才能实现我的目标? 谢谢

1 个答案:

答案 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>
相关问题