问题描述
我有一个包含属性WorkSpaces的ViewModel:
public ObservableCollection < ServiceViewModel > WorkSpaces {get; set;}
public ObservableCollection<ServiceViewModel> WorkSpaces{get; set;}
WorkSpaces I绑定到ContentControl,该ContentControl包含一个包含TabControl的DataTemplate作为ItemTemplate
< ContentControl 内容 =&"; { Binding 路径 = WorkSpaces}" ContentTemplate =&; { StaticResource WorkspacesTemplate }" />
<ContentControl Content="{Binding Path=WorkSpaces}" ContentTemplate="{StaticResource WorkspacesTemplate}" />
< DataTemplate x : Key =" WorkspacesTemplate">
< TabControl IsSynchronizedWithCurrentItem =真"
ItemTemplate =" { StaticResource ClosableTabItemTemplate }"
ItemTemplate="{StaticResource ClosableTabItemTemplate}"
ItemsSource =" { 绑定 }"; >
</ TabControl >
</ DataTemplate >
另外我有一个将ServiceViewModel连接到ServiceView的DataTemplate:
< DataTemplate DataType =""{ x : Type vm : ServiceViewModel }">
<DataTemplate DataType="{x:Type vm:ServiceViewModel}">
< v : ServiceView />
<v:ServiceView/>
</ DataTemplate >
如果我执行以下代码,将创建一个新视图并将其显示为UserInterface中的外观:
WorkSpaces.添加(新ServiceViewModel);
跨度>
因为我有一个TabControl可以添加另一个ServiceViewModel:
WorkSpaces.添加(新的ServiceViewModel); //WorkSpaces包含两个ServiceViewModels
问题因为第一个ServiceViewModel的视图也连接到第二个ServiceViewModel,所以现在两者都具有相同的视图,没有实例化该视图的新实例.有没有一种方法可以强制WPF创建视图的新实例?还是有其他方法可以解决此问题?
跨度>
Reagrds Koert
推荐答案
< v : ServiceView />
< v : ServiceView />
</ DataTemplate >
< DataTemplate 共享 =" False" DataType =&"; { x : Type vm : ServiceViewModel }">
< DataTemplate Shared ="False" DataType ="{ x : Type vm : ServiceViewModel }">
< v : ServiceView />
< v : ServiceView />
</ DataTemplate >
这篇关于MVVM-相同类型的多个ViewModel->视图的单一实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!