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

Lew*_*rin 4 c# wpf datacontext datatemplate

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

 <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>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在尝试为创建的View设置DataContext,希望它将使用用于创建它的ViewModel.但是当我单步执行代码时,DataContext始终为null.我怎样才能实现我的目标?谢谢

LPL*_*LPL 9

如果DataTemplate为ViewModel类定义了一个带有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>
Run Code Online (Sandbox Code Playgroud)

  • 在View构造函数中?我认为DataContext将在稍后设置. (3认同)
  • 哦该死的..让我看看我是否可以订阅DataContextChangedEvent (2认同)