WPF棱镜地区一个标签控件中是不是在该地区名单(WPF Prism Region inside a

2019-09-16 14:48发布

我有与连接到它的区域的标签控制和我也得到了一个内容控制在我的选项卡控制的内容与另一区域。

我遇到的问题是 - 如果我叫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);
         }
     }
 }

正如你所看到的 - 这是一个有点janky和完全不是那么回事。 任何想法,我做错了什么?

谢谢你的帮助!

Answer 1:

玩了很多,谷歌搜索后,我终于遇到了和回答!

因为该地区是一个DataTemplate内,该棱镜标准的行为,换货不会把它捡起来,并与区域经理注册。

使用所提供的代码, 在这里它帮助我解决这个问题,并进行正常的! :)

欢呼声。 你。



文章来源: WPF Prism Region inside a tab control isn't in the Region List