2009-09-07 55 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)。如果您有用戶將新選項卡添加到選項卡面板,則需要添加滾動條。