Catel中的ViewModel集合

4

我有一个包含多个DataTemplate的视图。每个DataTemplate都有一个视图和视图模型,如下所示:

<DataTemplate DataType="{x:Type viewModels:exampleViewModel}">
    <AdornerDecorator>
        <ScrollViewer>
            <views:exampleView />
        </ScrollViewer>
    </AdornerDecorator>
</DataTemplate>

我有一个绑定到DataContextTabControl

DataContext中有一个集合,该集合包含所有不同视图模型的列表,这些视图模型由DataTemplates引用:

<TabControl
    DataContext="{Binding}"
    ItemsSource="{Binding Collection, Mode=OneWay}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock
                Text="{Binding}" />
        </DataTemplate>
    </TabControl.ItemTemplate>
</TabControl>

显然,在包含TabControl的视图中有一个“主”ViewModel。
这很有效,为集合中的每个项目创建了TabItem,并设置了每个页面的内容。
我现在想把它移到Catel上,但不知道从哪里开始(如果我错了,请纠正我):
1.任何ViewModel中现在都不应该有对其他ViewModel的引用; 2.Catel会自动链接我的视图和ViewModel。
有什么建议吗?

你目前的设计存在缺陷...如果你的“Collection”属性持有所有的视图模型,那么这意味着即使它们没有被显示,它们仍然被实例化并占用资源。如果我是你,我会使用Catel来重新设计你的方案。 - Sheridan
@Sheridan 是的...这就是为什么我要转到Catel吗?有什么建议吗?关于如何在Catel中实现类似的东西。显然,想法不是要实例化任何ViewModels,而是使用来自我的模型的项目集合。 - pjdupreez
1个回答

1

有没有一个特定的示例,我必须查看我的情况,或者您认为我的设计需要重新制定。简单地说,使用Catel创建具有多个(未知)选项卡项目的选项卡控件是否有“最佳实践”方法?例如,如果我的模型中有一个车辆对象,其中包含一组轮子(但每个轮子都不同,为了论证),并且轮子数量不同,我该如何使用Catel来实现它以利用选项卡控件? - pjdupreez
Catel提供了一个TabControl(Catel.Extensions.Controls),允许您选择行为:https://catelproject.atlassian.net/wiki/display/CTL/TabControl - Geert van Horrik
顺便提一下,请确保使用最新的预发布版本,它很稳定,几乎已经完成了4.0版,这样在升级时就可以避免很多破坏性的更改。 - Geert van Horrik
抱歉,我在评论还没写完的时候不小心按了“Enter”键... 我会看一下Catel的选项卡控件,谢谢。 - pjdupreez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接