2009-09-07 53 views
4

在Windows窗体中,TabControl的默认行为是让选项卡溢出到可滚动区域(如果它们占用太多空间) (MultiLine = false)。如何使WPF TabControl显示为与Windows窗体中的MultiLine = false(默认值)

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

UPDATE

我试图用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> 

回答

4

在努力使这里是标签沿左侧垂直堆叠的一个TabControl,我发现这个解决方案为您提供:

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

相当令人印象深刻的东西!

+0

我刚刚意识到你已经发布了我刚发现的相同链接,这是一篇很棒的文章,并且非常感谢你的回答,只希望我在3月份看到它。 – 2010-07-29 11:16:07

0

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

像这样的东西(只是这个编码不VS)

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

希望有点帮助...

+0

嗨ppx,这是几乎相同的方法,我正在采取,虽然我没有放入模板会有所作为,它仍然会出现相同的,所以现在我已经决定尝试和取代整个TabControl模板,这不是我原本打算做的事情,并且必须使用ItemsPanelTemplate来实现某种更简单的解决方案。我会在一秒之内发布我一直在尝试的内容。 – 2009-09-11 03:26:09

0

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

我的灵感是来自wpf中称为IE选项卡的代码项目的一个不错的项目。 它的老作为WPF和做工不错

0

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

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