首页 > 解决方案 > 我可以将区域放在 TabItem 控件中吗?

问题描述

我有以下代码来显示视图。

<TabControl>
     <TabItem x:name=View1 ...>
           <TabItem.Header>
               <Grid>
                  <local:View1 />
               </Grid>
           </TabItem.Header>
     </TabItem>
     <TabItem x:name=View2 ...>
            <TabItem.Header>
               <Grid>
                  <local:View2 />
               </Grid>
           </TabItem.Header>
     </TabItem>
     <TabItem x:name=View3 ...>
         <TabItem.Header>
               <Grid>
                  <local:View3 />
               </Grid>
           </TabItem.Header>
     </TabItem>
</TabControl>

现在出于某些导航目的,我想从不同的模块导航到视图。所以我想我必须将区域添加到视图中。

那么我可以将区域添加到 TabItem 控件吗?如

<TabControl>
     <TabItem x:name=View1 prism:RegionManager.RegionName="Region1".../>
     <TabItem x:name=View2 prism:RegionManager.RegionName="Region2".../>
     <TabItem x:name=View3 prism:RegionManager.RegionName="Region3".../>
</TabControl>

或者我必须用TabItem替换ContentControl?问题是代码以某种方式在生产中。如果我改变它不确定有什么负面影响?

标签: wpfprism

解决方案


您可以在其中放置一个并ContentControl在其中TabItem托管区域。

TabControlRegionAdapter您通过谷歌搜索找到的“正常” (例如这个)允许您在其中托管区域,TabControl以便TabItem为您添加到该区域的每个视图创建一个 - 这似乎不是您想要的。

<TabControl>
     <TabItem x:name=View1>
         <ContentControl prism:RegionManager.RegionName="Region1"/>
     </TabItem>
     <TabItem x:name=View2>
         <ContentControl prism:RegionManager.RegionName="Region2"/>
     </TabItem>
     <TabItem x:name=View3>
         <ContentControl prism:RegionManager.RegionName="Region3"/>
     </TabItem>
</TabControl>

推荐阅读