MVVM ViewModel公开同一集合的多个视图

MVVM ViewModel公开同一集合的多个视图,mvvm,collections,view,Mvvm,Collections,View,我在这里咬了一大块,试图同时学习MVVM、Unity和Prism!。到目前为止,情况还算不错,但我偶尔会遇到一些绊脚石。其中之一是: 我有一个VM,它定义了一个主细节屏幕。在详细信息部分,我想在选项卡控件上跨多个数据网格划分详细信息行。每个DataGrid都包含详图线的一个不同子集,该子集基于线段中某个特性的值。所以本质上,我读的是我的主实体,它包含一组细节实体。我认为我需要向视图公开此集合的不同视图,以便数据网格可以分别绑定到细节集合的适当过滤子集。数据网格必须是可编辑的。我已经尝试过将不同级

我在这里咬了一大块,试图同时学习MVVM、Unity和Prism!。到目前为止,情况还算不错,但我偶尔会遇到一些绊脚石。其中之一是:

我有一个VM,它定义了一个主细节屏幕。在详细信息部分,我想在选项卡控件上跨多个数据网格划分详细信息行。每个DataGrid都包含详图线的一个不同子集,该子集基于线段中某个特性的值。所以本质上,我读的是我的主实体,它包含一组细节实体。我认为我需要向视图公开此集合的不同视图,以便数据网格可以分别绑定到细节集合的适当过滤子集。数据网格必须是可编辑的。我已经尝试过将不同级别的CollectionView作为DataGrids的ItemsSources公开,但似乎没有什么能正常工作。此外,我认为最好将数据网格分解成一个通用视图,因为它们都在不同的细节子集上显示相同的信息,但我不确定如何做到这一点。有人能帮忙吗

谢谢,
丹尼斯

如果我理解正确的话,你有这样的想法:

public class MasterClass
{
    public List<object> Details;
}
这只是一个粗略的示例,它会根据Detail.ItemType是Address还是Phone来更改TabItem的模板。我以前也用一个转换器来检查对象的类型,而不需要在对象上有一个type属性,这样效果更好


如果您感兴趣,我写了一篇简短的文章,介绍了几种基于ViewModel数据切换视图或用户控件的方法

谢谢!我使用ViewModel公开的ListCollectionViews拼凑了一些有用的东西。但这似乎不是一个很好的解决方案,我还没有完全测试它。我今天要看你的文章。我相信无论它是否有助于我解决这个特殊问题,它都会对我有所帮助。
<TabControl ItemsSource="{Binding Details}">
    <TabControl.Resources>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="Template" Value="{StaticResource DefaultTemplate}" />
            <Style.Triggers>
                <DataTrigger Property="{Binding ItemType}" Value="Address">
                    <Setter Property="Template" Value="{StaticResource AddressTemplate}" />
                </DataTrigger>
                <DataTrigger Property="{Binding ItemType}" Value="Phone">
                    <Setter Property="Template" Value="{StaticResource PhoneTemplate}" />
                </DataTrigger>
        </Style>
    </TabControl.Resources>
</TabControl>