如何为每个TabItem创建一个带有多个标题的WPF TabControl?
说明:如何为每个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>
如果我没有理解它正确然后你想要改变TabItems头取决于你在外部控制中选择哪个视图。如果是这种情况,那么你应该尝试扩展你的外部控制,使用一个包含实际标题值的属性,然后将其绑定到TabItmes标题。
你的建议是可行的,但我还有一个问题。我不仅需要实际的标题值,还需要外部控件的其他视图名称(非活动视图)。 –
然后,您希望看到TabItems标题中的所有视图名称,但想区分所选视图名称。这听起来有点困难,但也许你可以为TabItems头创建一个dataTemplate,它有一个列表框,然后将视图列表绑定到它并将selectedItem绑定到实际选定的视图,甚至可以设置列表框的样式。 – BigL
您可以拥有它,以便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>
好吧,我喜欢这个简单!但是,如何使用此解决方案获得一致的TabItem标题样式? –
@Monty - 一致如? – Amry
看到我的开场白,与标题'视图A'和'视图B'一致,看起来与标题'字母'相同。 –
我们使用下面的链接
[http://zamjad.wordpress.com/2011/09/21/using-contenttemplateselector/]
当我们面临这些类型问题
请注意,[只有链接的答案](http://meta.*.com/tags/link-only-answers/info)不鼓励,所以答案应该是搜索解决方案的终点(vs.而另一个引用的中途停留时间往往会随着时间推移而过时)。请考虑在此添加独立的摘要,并将链接保留为参考。 – kleopatra
你能提供一些这样的控制原型或草图吗?我无法想象具有多个标题的标签项目。 – vorrtex
@vorrtex请看这个原型的更新后的帖子。 –
仍然不明白。你想把视图A放在视图B的下面吗?或以上?还是在左边?如果有更多的观点比两个更好? – vorrtex