DataContext(WPF)中视图模型转换的隐式模型

时间:2015-02-17 14:42:05

标签: c# wpf mvvm

我有一个非常笼统的问题,而且我不确定这个问题是否已经提出/回答过。

我的应用程序中有一个模型(工作流程)。目前我将模型分配给我的窗口/视图的DataContext,但实际上我想在工作流周围创建一个ViewModel并将此ViewModel分配给DataContext。

问题是,窗口和视图是使用DataTemplates和列表创建的,其中只分配了模型,因为所有内容都是在远程后端中创建的。前端获取有关模型的信息,该信息在创建视图时自动在DataContext中关联。

当然,我可以在设置DataContext时手动创建ViewModel。但后来我需要更改DataContext并将其设置为ViewModel并且旧的DataContext已经消失。此外,我必须手动完成它,尽管可以使用资源在XAML中轻松完成。

是否有一种模式可以应对这一要求?我还没找到任何东西。

由于 马丁

1 个答案:

答案 0 :(得分:1)

您只需将DataTemplate添加到特定视图的Resources部分即可:

<DataTemplate DataType="{x:Type ViewModels:YourViewModel}">
    <Views:YourView />
</DataTemplate>

在这种特殊情况下,只要在UI中找到类型为YourView的对象,并且视图模型将隐式设置为YourViewModel属性值,就会呈现YourView.DataContext视图。使用此DataTemplate,您可以显示YourView视图,如下所示:

<ContentControl Content="{Binding PropertyOfTypeOfYourViewModel}" />

请注意,此DataTemplate应在Resources视图之外的YourView部分和{{1>范围内的中声明}