视图包含另一个相对视图

时间:2012-01-20 18:11:33

标签: wpf mvvm prism

我想构建一个视图,它将包含一个区域的注入视图(两者都有自己的ViewModels)。

第一个视图将包含一些将在第二个视图上“执行”的动作控件(新建,保存,删除,加载按钮),其中包含一些字段控件(用于用户输入的TextBox)。

第一个视图(及其viewmodel)不能包含进入它的视图的真实(最终)类型,因为这种类型可能会有所不同(例如:客户字段,产品字段,用户字段)。

问题是:如何以正确的方式使用MVVM来实现这一目标?

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你有一个包含通用对象的视图,你想要一个基于通用对象的不同模板。

如果是这种情况,请使用ContentControlDataTemplates

<ContentControl Content="{Binding SomeGenericObject}">
    <ContentControl.Resources>
        <DataTemplate DataType="{x:Type local:CustomerViewModel}">
            <local:CustomerView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:ProductViewModel}">
            <local:ProductView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:OrderViewModel}">
            <local:OrderView />
        </DataTemplate>
    </ContentControl.Resources>
</ContentControl>

至于处理ViewModel中的通用CRUD操作,请参阅my answeryour other question有关使用通用接口的信息。