Catel 中的 ViewModel 集合
Posted
技术标签:
【中文标题】Catel 中的 ViewModel 集合【英文标题】:Collection of ViewModels in Catel 【发布时间】:2014-08-13 12:26:26 【问题描述】:我有几个DataTemplate
s 的视图。每个DataTemplate
都有一个 View 和 ViewModel,如下所示:
<DataTemplate DataType="x:Type viewModels:exampleViewModel">
<AdornerDecorator>
<ScrollViewer>
<views:exampleView />
</ScrollViewer>
</AdornerDecorator>
</DataTemplate>
然后我有一个绑定到DataContext
的TabControl
。
在 DataContext 中,有一个 Collection,其中包含 DataTemplates 引用的所有不同 viewModel 的列表:
<TabControl
DataContext="Binding"
ItemsSource="Binding Collection, Mode=OneWay">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock
Text="Binding" />
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
显然,包含 TabControl 的 View 有一个“主”ViewModel。
这很好用,为我为集合中的每个项目创建TabItem
s 并设置每个页面的内容。
我现在想把它移到 Catel,但不知道从哪里开始,因为(如果我错了,请纠正我):
我现在不应该在任何 ViewModel 中引用任何其他 ViewModel 并且
Catel 会自动为我链接我的视图和视图模型。
有什么建议吗?
【问题讨论】:
你当前的设计是有缺陷的......如果你的Collection
属性包含你所有的视图模型,那么这意味着它们都被实例化并耗尽了资源,即使它们没有被显示。如果我是你,我会利用搬到 Catel 来重新设计你的设计。
@Sheridan 是的...这就是为什么我要搬到Catel?有什么建议么?关于如何在 Catel 中实现类似的东西,就是这样。这个想法显然不是实例化任何 ViewModel,而是使用我的模型中的项目集合
【参考方案1】:
我建议搬到 Catel。它确实解决了这个问题(这实际上是它首先被编写的原因)。如需一个好的起点,请查看大量文档:
https://catelproject.atlassian.net/wiki/display/CTL/Catel+documentation+Home
一个很好的阅读是 WPF 入门部分:
https://catelproject.atlassian.net/wiki/display/CTL/Getting+started+with+WPF
还可以查看示例存储库:
https://github.com/Catel/Catel.Examples
【讨论】:
是否有我必须针对我的场景查看的具体示例,或者您认为我的设计需要返工。简而言之,是否有使用 Catel 创建具有多个(未知)选项卡项的选项卡控件的“最佳实践”方法?例如,如果我的模型中有一个带有***集合的 Vehicle 对象(但每个***为了参数而不同)并且***的数量不同,我将如何使用 Catel 实现它以使用选项卡控件? Catel 提供了一个 TabControl (Catel.Extensions.Controls) 允许您选择行为:catelproject.atlassian.net/wiki/display/CTL/TabControl 顺便说一句,请确保使用最新的预发布版本,它很稳定,几乎完成了 4.0,升级时将为您节省大量重大更改。 抱歉,我在完成评论之前不小心按了“Enter”...我会看看 Catel 的 Tab Control,谢谢以上是关于Catel 中的 ViewModel 集合的主要内容,如果未能解决你的问题,请参考以下文章