Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Catel中的ViewModels集合_C#_Wpf_Mvvm_Catel - Fatal编程技术网

C# Catel中的ViewModels集合

C# Catel中的ViewModels集合,c#,wpf,mvvm,catel,C#,Wpf,Mvvm,Catel,我有几个DataTemplates的视图。每个DataTemplate都有如下视图和视图模型: <DataTemplate DataType="{x:Type viewModels:exampleViewModel}"> <AdornerDecorator> <ScrollViewer> <views:exampleView /> </ScrollViewer> &

我有几个
DataTemplate
s的视图。每个
DataTemplate
都有如下视图和视图模型:

<DataTemplate DataType="{x:Type viewModels:exampleViewModel}">
    <AdornerDecorator>
        <ScrollViewer>
            <views:exampleView />
        </ScrollViewer>
    </AdornerDecorator>
</DataTemplate>
显然,对于包含TabControl的视图,有一个“主”视图模型

这非常有效,可以为集合中的每个项目为我创建
TabItem
s,还可以设置每个页面的内容

我现在想把这个问题转移到Catel,但不知道从哪里开始,因为(如果我错了,请纠正我):

  • 现在,我不应该在任何ViewModel和中引用任何其他ViewModel

  • Catel会自动为我链接视图和ViewModels


  • 有什么建议吗?

    我建议搬到卡特尔。它确实解决了这个问题(这就是它最初被编写的原因)。要获得良好的起点,请查阅大量文档:

    WPF入门部分是一本很好的读物:

    另请查看示例存储库:


    您当前的设计有缺陷。。。如果您的
    集合
    属性包含所有视图模型,则这意味着它们都已实例化,并且即使在未显示时也会耗尽资源。如果我是你的话,我会用卡特尔的举动来重做你的设计。@Sheridan是的。。。这就是为什么我要搬到卡特尔去?有什么建议吗?关于如何在Catel中实现类似的东西,即。我们的想法显然不是要实例化任何ViewModels,而是使用我的Model中的一组项。我必须为我的场景查看一个特定的示例,或者您认为我的设计需要返工吗。简单地说,是否有一种“最佳实践”方法可以使用Catel创建包含多个(未知)选项卡项的选项卡控件?例如,如果我的模型中有一个车辆对象,它有一组车轮(但为了论证,每个车轮都不同),车轮的数量也不同,我如何使用Catel来实现这一点,以利用Tab控件?Catel提供了一个TabControl(Catel.Extensions.Controls),允许您选择行为:顺便说一句,请确保使用最新的预发行版,它很稳定,几乎与4.0版一样,升级时将为您节省大量破坏性的更改。抱歉,在完成评论之前,我无意中按了“回车”键。。。我会看看Catel的标签控件,谢谢
    <TabControl
        DataContext="{Binding}"
        ItemsSource="{Binding Collection, Mode=OneWay}">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock
                    Text="{Binding}" />
            </DataTemplate>
        </TabControl.ItemTemplate>
    </TabControl>