WPF Prism如何在一个区域内有重复的视图

时间:2012-04-17 09:13:54

标签: wpf prism

我目前正在使用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);

我的观点是如此一致地注册的;;

   this.Container.RegisterType<IConversationDetailsPresentationModel,                   ConversationDetailsPresentationModel>(
            new TransientLifetimeManager());

        this.Container.RegisterType<IConversationDetailsView, ConversationDetailsView>(
            new 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>

编辑:我的实际问题是这个..是否有可能在一个区域内有重复的视图?当我尝试它时,我得到一个关于它已经被注册的例外..我真正需要的是绕过这个或者可能创建一个允许它的区域。

感谢您的帮助!!

欢呼声。 STE。

2 个答案:

答案 0 :(得分:2)

试试这个。

IRegion TabRegion =  manager.Regions["TabRegion"];

tabRegion.Add(convDetailsView1);
tabRegion.Add(convDetailsView2);

答案 1 :(得分:0)

试试这个解决方案:

IRegion TabRegion =  manager.Regions["TabRegion"];
tabRegion.Add(convDetailsView1).AdToRegion("make your region here",convDetailsView2);