如何使Windows窗体中的MultiLine = false显示WPF TabControl(默认)

时间:2009-09-07 05:40:51

标签: wpf xaml tabcontrol

在Windows窗体中,TabControl的默认行为是,如果选项卡占用太多空间(MultiLine = false),则选项卡会溢出到可滚动区域。

在WPF中实现此行为的最佳方法是什么?

更新

我试图使用TabControl.ItemsPanel找到一个解决方案,但似乎我放在那里的任何内容都被完全忽略了,所以出于这个原因,我已经走得很艰难,开始于TabControl.Template令人难以置信的是,如果事实证明这是正确的方法,我们必须这样做。

远没有完成,我对问题的解决方案如下:

<TabControl>
  <TabControl.Template>
    <ControlTemplate TargetType="{x:Type TabControl}">
      <DockPanel>
        <ScrollViewer DockPanel.Dock="Top"
                      HorizontalScrollBarVisibility="Auto"
                      VerticalScrollBarVisibility="Disabled">
          <StackPanel Orientation="Horizontal" IsItemsHost="True" />
        </ScrollViewer>
        <ContentPresenter ContentSource="SelectedContent" />
      </DockPanel>
    </ControlTemplate>
  </TabControl.Template>
  <TabItem Header="One">First</TabItem>
  <TabItem Header="Two">Second</TabItem>
  <TabItem Header="Three">Third</TabItem>
  <TabItem Header="Four">Fourth</TabItem>
  <TabItem Header="Five">Fifth</TabItem>
</TabControl>

5 个答案:

答案 0 :(得分:4)

在制作TabControl,其中标签沿左侧垂直堆叠时,我找到了适合您的解决方案:

http://www.blogs.intuidev.com/post/2010/02/10/TabControlStyling_PartThree.aspx

令人印象深刻的东西!

答案 1 :(得分:0)

最简单的选择是在TabControl上设置ItemsPanelTemplate。我认为默认是WrapPanel,因此是Multiline行为。 例如,将其更改为StackPanel,并可能添加ScrollViewer。

像这样的东西(只是在没有VS的情况下编码)

<TabControl>
  <TabControl.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal"/>
    </ItemsPanelTemplate>
  </TabControl.ItemsPanel>
</TabControl>

希望有所帮助...

答案 2 :(得分:0)

您替换模板的解决方案似乎是执行此操作的最佳方式。 TabItems的默认面板是TabPanel,我没有看到任何类似“should wrap”属性的内容。

该文档包含使用不同的TabPanel替换TabControl模板的示例:

http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.tabpanel.aspx

答案 3 :(得分:0)

几年前我遇到了同样的问题,我的解决方案是限制标题的大小,以及包含它的面板,当然你需要制作自己的模板,就像你开始的那样,我还需要实现一些滚动支持,所以我在滚动查看器的左侧和右侧放置了两个重复按钮。

我的灵感是来自wpf中称为IE标签的代码项目的一个很好的项目。 它像wpf一样古老而且运作良好

答案 4 :(得分:0)

我知道这是一篇较旧的帖子,但如果其他人在互联网上搜索,我想添加另一个想法。

如果将tabpanel的宽度设置为更大的值(假设这不是一个允许用户继续在其中添加其他标签的tabpanel)。如果您让用户向选项卡面板添加新选项卡,则需要添加滚动条。