我可以将区域放在 TabItem 控件中吗?

Can I put region in TabItem control?

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

<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>

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

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

您通过谷歌搜索(例如 this one)找到的 "normal" 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>