WPF Prism如何在区域内具有重复视图
我目前正在使用Tab控件,并且已经创建了一个区域,因此它将成为我的主机 我要做的是将同一视图添加到一个区域两次。。你可能会问为什么?这是因为该应用程序是一个简单的聊天应用程序——会有许多视图实例,但每个实例都有不同的信息 我的代码到目前为止WPF Prism如何在区域内具有重复视图,wpf,prism,Wpf,Prism,我目前正在使用Tab控件,并且已经创建了一个区域,因此它将成为我的主机 我要做的是将同一视图添加到一个区域两次。。你可能会问为什么?这是因为该应用程序是一个简单的聊天应用程序——会有许多视图实例,但每个实例都有不同的信息 我的代码到目前为止 IConversationDetailsPresentationModel convDetailsView1 = this.Container.Resolve<IConversationDetailsPresen
IConversationDetailsPresentationModel convDetailsView1 =
this.Container.Resolve<IConversationDetailsPresentationModel>();
IRegionManager manager = this.Container.Resolve<IRegionManager>();
manager.RegisterViewWithRegion("TabRegion", () => convDetailsView1);
IConversationDetailsPresentationModel convDetailsView2 =
this.Container.Resolve<IConversationDetailsPresentationModel>();
manager.RegisterViewWithRegion("TabRegion", () => convDetailsView2);
IConversationDetailsPresentationModelConvDetailsView1=
this.Container.Resolve();
IRegionManager=this.Container.Resolve();
manager.RegisterViewWithRegion(“TabRegion”,()=>convDetailsView1);
I转换详细信息演示模型ConvDetailsView 2=
this.Container.Resolve();
manager.RegisterViewWithRegion(“TabRegion”,()=>convDetailsView2);
我的观点是如此团结一致
this.Container.RegisterType<IConversationDetailsPresentationModel, ConversationDetailsPresentationModel>(
new TransientLifetimeManager());
this.Container.RegisterType<IConversationDetailsView, ConversationDetailsView>(
new TransientLifetimeManager());
this.Container.RegisterType(
新的TransientLifetimeManager());
this.Container.RegisterType(
新的TransientLifetimeManager());
还有,我的XAML
<TabControl TabStripPlacement="Left"
Width="Auto"
Height="Auto"
cal:RegionManager.RegionName="TabRegion"
Name="TabRegion"
SelectedItem="{Binding SelectedTab}">
<TabControl.ContentTemplate>
<DataTemplate>
<ContentControl cal:RegionManager.RegionName="TabContentRegion">
</ContentControl>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
编辑:我真正的问题是。。区域内是否可能存在重复视图?当我当前尝试它时,我得到一个关于它已被注册的异常。。我真正需要的是绕过这一点,或者创建一个允许它的区域。
谢谢你的帮助
干杯。
试试这个
IRegion TabRegion = manager.Regions["TabRegion"];
tabRegion.Add(convDetailsView1);
tabRegion.Add(convDetailsView2);
尝试以下解决方案:
IRegion TabRegion = manager.Regions["TabRegion"];
tabRegion.Add(convDetailsView1).AdToRegion("make your region here",convDetailsView2);
我不知道你在问什么。你刚才不是自己写了问题的答案吗。“将区域附加到UI元素(如ContentControl、ItemsControl、TabControl或customer控件),并管理UI元素的内容。”。所以,是的,它应该有用。@Rikkos-请看我的最新评论。。我基本上想要的是在我的区域内有重复的视图!只是一个疑难解答的想法,您是否尝试过GetHashCode()来查看TransientLifetimeManager是否提供了不同的实例?遗憾的是,这没有起作用-它给出了以下错误。。“{”指定的元素已经是另一个元素的逻辑子元素。请先断开它的连接。“}”请稍候,复制为完全相同或相同类型的元素。我没有看到你使用相同的实例。我做了一个测试项目,没有任何问题。我什么都试过了。如果你有你的项目,我可以看看。这将是帮助您真正了解同一类型的最后一个选项-它们应该有自己的视图/表示模型实例,只是数据不同而已。@Stephen嗯,我找不到任何可能导致您出现问题的东西。我唯一能想到的就是你的数据模板。你想用“TabContentRegion”这个区域实现什么?解决了它。。。以某种方式我遇到了一个问题,导致元素已经在树中出现问题。。删除它并将其添加到控件中后,一切都已修复