2011-10-06 105 views
0

说明:如何为每个TabItem创建一个带有多个标题的WPF TabControl?

目前我在这里创建的主要内容应在一个TabControl呈现一个WPF应用程序的过程。

的存在的TabControl的:

  • 包含具有多个视图,其中每一视图应该是可见的作为页眉上的TabControl外部控制甲TabItem的;
  • 多个TabItems与我们自己的内容,每一个都有自己的头。

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

你能提供一些这样的控制原型或草图吗?我无法想象具有多个标题的标签项目。 – vorrtex

+0

@vorrtex请看这个原型的更新后的帖子。 –

+0

仍然不明白。你想把视图A放在视图B的下面吗?或以上?还是在左边?如果有更多的观点比两个更好? – vorrtex

回答

1

如果我没有理解它正确然后你想要改变TabItems头取决于你在外部控制中选择哪个视图。如果是这种情况,那么你应该尝试扩展你的外部控制,使用一个包含实际标题值的属性,然后将其绑定到TabItmes标题。

+0

你的建议是可行的,但我还有一个问题。我不仅需要实际的标题值,还需要外部控件的其他视图名称(非活动视图)。 –

+0

然后,您希望看到TabItems标题中的所有视图名称,但想区分所选视图名称。这听起来有点困难,但也许你可以为TabItems头创建一个dataTemplate,它有一个列表框,然后将视图列表绑定到它并将selectedItem绑定到实际选定的视图,甚至可以设置列表框的样式。 – BigL

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

好吧,我喜欢这个简单!但是,如何使用此解决方案获得一致的TabItem标题样式? –

+0

@Monty - 一致如? – Amry

+0

看到我的开场白,与标题'视图A'和'视图B'一致,看起来与标题'字母'相同。 –

0

我们使用下面的链接

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

当我们面临这些类型问题

+0

请注意,[只有链接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info)不鼓励,所以答案应该是搜索解决方案的终点(vs.而另一个引用的中途停留时间往往会随着时间推移而过时)。请考虑在此添加独立的摘要,并将链接保留为参考。 – kleopatra

相关问题