MVVM数据模板复制视图(但不同的视图模型)上的选项卡

本文关键字:视图 模型 选项 数据 复制 MVVM | 更新日期: 2023-09-27 18:14:54

我有一个DataTemplate在我的App.XAML

        <DataTemplate DataType="{x:Type ViewModels:MSMemberViewModel}">
            <Views:MSMemberView>
            </Views:MSMemberView>
        </DataTemplate>

用于在另一个视图内的tabcontrol中创建视图:

    <TabControl ItemsSource="{Binding Tabs}" SelectedIndex="{Binding SelectedIndex}">
        <TabControl.ItemTemplate>
  //...
        </TabControl.ItemTemplate>
        <TabControl.ContentTemplate>
            <DataTemplate>
                <ContentControl Content="{Binding ViewModel}">
                </ContentControl>
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl>

标签是一个ObservableCollection对象,包含标签名和ViewModel。

每当我向ObservableCollection添加新选项卡时,都会实例化New ViewModels(我知道这一点,因为每次添加新选项卡时都会调用构造函数),并且我的代码对选项卡名称进行编号(因为每个选项卡都有不同的名称),但是View是重复的!我该怎么解决这个问题?

编辑:

同样,ObservableCollection上的ViewModels都不反映调试时实例化ViewModel/View的当前值。

MVVM数据模板复制视图(但不同的视图模型)上的选项卡

嗯,因为我不知道字段绑定是如何实现的,这只是一个大胆的猜测,但我认为你应该改变DataTemplate一点。像这样…

<!-- your stuff -->
<TabControl.ContentTemplate>
   <DataTemplate>
       <ContentControl DataContext="{Binding ViewModel}">
       </ContentControl>
   </DataTemplate>
</TabControl.ContentTemplate>
<!-- your stuff -->