WPF Prism如何在区域内具有重复视图

WPF Prism如何在区域内具有重复视图,wpf,prism,Wpf,Prism,我目前正在使用Tab控件,并且已经创建了一个区域,因此它将成为我的主机 我要做的是将同一视图添加到一个区域两次。。你可能会问为什么?这是因为该应用程序是一个简单的聊天应用程序——会有许多视图实例,但每个实例都有不同的信息 我的代码到目前为止 IConversationDetailsPresentationModel convDetailsView1 = this.Container.Resolve<IConversationDetailsPresen

我目前正在使用Tab控件,并且已经创建了一个区域,因此它将成为我的主机

我要做的是将同一视图添加到一个区域两次。。你可能会问为什么?这是因为该应用程序是一个简单的聊天应用程序——会有许多视图实例,但每个实例都有不同的信息

我的代码到目前为止

        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”这个区域实现什么?解决了它。。。以某种方式我遇到了一个问题,导致元素已经在树中出现问题。。删除它并将其添加到控件中后,一切都已修复