0

我有一个附有区域的选项卡控件,并且我的选项卡控件内部还有一个内容控件,该控件具有另一个区域的内容。

我遇到的问题是 - 如果我调用 RegisterViewWithRegion 它将视图添加到该区域没有问题(第一次,如果你交换标签会出现问题)。但这不是很灵活,我正在寻找一种更好的方法来做到这一点。

当我查看 IRegionManager.Regions 内部时 - 我只能看到两个顶级区域。我看不到我的子区域TabContentRegion。有没有办法注册这个,所以我可以像往常一样添加视图并激活它们?

   <TabControl TabStripPlacement="Left"
            Width="Auto"
            Height="Auto"
            cal:RegionManager.RegionName="TabRegion"
            Name="TabRegion"
            SelectedItem="{Binding SelectedTab}">
    <TabControl.ContentTemplate>
        <DataTemplate>

            <ContentControls:TransitionContentControl 
                cal:RegionManager.RegionName="TabContentRegion" />

        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

此代码将视图添加到 TabRegion

 public void Load()
 {
     IConfigurationDetailsPresentationModel convDetailsView1 =
         this.Container.Resolve<IConfigurationDetailsPresentationModel>();

     IRegionManager manager = this.Container.Resolve<IRegionManager>();
     manager.RegisterViewWithRegion("TabRegion", () => convDetailsView1);

     IConversationDetailsPresentationModel conversationDetails = 
         this.Container.Resolve<IConversationDetailsPresentationModel>();
     manager.RegisterViewWithRegion("TabRegion", () => conversationDetails);
 }

然后这是我用来在 TabContentRegion 中实际显示视图的代码

 public IPresentationModel SelectedTab
 {
     get { return _selectedTab; }
     set
     {
         _selectedTab = value;

         IRegionManager service = this.Container.Resolve<IRegionManager>();

         if (service != null)
         {
             service.RegisterViewWithRegion(
                 "TabContentRegion",
                 () => _selectedTab.View);
         }
     }
 }

正如你所看到的 - 它有点笨拙并且不太有效。任何想法我做错了什么?

谢谢你的帮助!

4

1 回答 1

0

After alot of playing and googling I finally came across and answer!

because the region was inside a datatemplate, that ment that prisms standard behaviours wouldn't pick it up and register it with the region manager.

using the code provided here it helped me to fix this and carry on as normal! :)

cheers. ste.

于 2012-04-23T07:55:50.593 回答