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的当前值。
嗯,因为我不知道字段绑定是如何实现的,这只是一个大胆的猜测,但我认为你应该改变DataTemplate
一点。像这样…
<!-- your stuff -->
<TabControl.ContentTemplate>
<DataTemplate>
<ContentControl DataContext="{Binding ViewModel}">
</ContentControl>
</DataTemplate>
</TabControl.ContentTemplate>
<!-- your stuff -->