如何创建每个TabItem多个标头的WPF TabControl?

时间:2011-10-06 09:30:50

标签: c# .net wpf xaml tabcontrol

说明

目前我正在创建一个WPF应用程序,其中主要内容应该以TabControl的形式呈现。

TabControl存在:

  • 包含具有多个视图的外部控件的TabItem,其中每个视图应作为TabControl上的标题显示;
  • 具有我们自己内容的多个TabItem,每个TabItem都有自己的标题。

WPF控件的样式不是问题,但是这种情况需要控件本身的一些特殊行为。问题是控件应该为每个TabItem呈现多个Headers。

问题:

  • 用于此类场景的最佳控件是什么?
  • 如果使用TabControl,应该进行哪些修改?

提前致谢。

更新#1

响应于涡旋这种控件的原型(如您所见,外部控件是Microsoft Office InfoPath FormControl):

   <TabControl x:Name="FormViewsTabControl">
      <TabItem>
         <TabItem.Headers>
            <TabItemHeader Text="View A" />
            <TabItemHeader Text="View B" />
         </TabItem.Headers>
         <TabItem.Content>
            <winforms:WindowsFormsHost x:Name="InfoPathFormsHost">
               <infopath:FormControl x:Name="InfoPathFormControl" />
            </winforms:WindowsFormsHost>
         </TabItem.Content>
      </TabItem>
      <TabItem Header="Letter">
         <local:CustomView />
      </TabItem>
   </TabControl>

3 个答案:

答案 0 :(得分:1)

如果我理解正确,那么你想根据你在外部控件中选择的视图来更改TabItems标题。如果是这种情况,那么您应该尝试使用包含实际标头值的属性扩展外部控件,然后将其绑定到TabItmes标头。

答案 1 :(得分:0)

您可以使用TabItem.Header包含一个Panel元素,该元素可以包含多个子元素。例如:

<TabItem>
  <TabItem.Header>
    <StackPanel>
      <TextBlock Text="View A" />
      <TextBlock Text="View B" />
    </StackPanel>
  </TabItem.Header>
  <TabItem.Content>
    <winforms:WindowsFormsHost x:Name="InfoPathFormsHost">
      <infopath:FormControl x:Name="InfoPathFormControl" />
    </winforms:WindowsFormsHost>
  </TabItem.Content>
</TabItem>

答案 2 :(得分:0)

我们使用以下链接

[http://zamjad.wordpress.com/2011/09/21/using-contenttemplateselector/]

当我们遇到这类问题时