2010-05-11 59 views
2

在WPF中,是否有一種簡單的方法來阻止TabControl中的TabItems在選定的TabItem更改時不會重新定位?因此,單擊一個TabItem只需顯示它的內容,但不像它通常那樣重新定位TabItems(通過將選定的TabItem移動到最後一行標籤,如果它沒有的話)。讓TabControl中的TabItems不能重新定位?

編輯:爲了澄清,我希望標籤顯示在多行,我只是不希望標籤頁眉重新定位時,從底部行以外的行中選擇一個TabItem。我希望頭部集合保持完全靜態,但對於該TabItem的內容在單擊頭部時仍然可以顯示。

謝謝!

回答

0

如果你有混合,你可以編輯你的選項卡控件的模板的副本,以消除這種行爲,我相信。

+0

我真正體會到了負沒有這麼多評論。我剛剛與Microsoft團隊成員(包括混合團隊的成員)進行了一天的配對編程,其中我們討論了WPF控件的不尋常特性。我們還通過在混合中編輯控件模板的副本來覆蓋擴展器控件的行爲,然後將編輯的模板設置爲該控件的默認模板。如果選項卡控件的這種行爲是硬編碼的,那麼它與Microsoft發佈的指南是相反的。 – 2010-05-12 01:54:54

5

我知道它的晚了,但我必須今天解決這個問題,所以在這裏。

基本上,您需要爲選項卡控件創建自己的控件模板,並使用不同的面板來包含選項卡項目。

這是使用WrapPanel的簡化示例。

<Style TargetType="TabControl" x:Key="MyTabControl"> 
<Setter Property="Template"> 
    <Setter.Value> 
    <ControlTemplate TargetType="TabControl"> 
     <Grid SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local" HorizontalAlignment="Stretch"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <WrapPanel x:Name="HeaderPanel" HorizontalAlignment="Center" VerticalAlignment="Top" IsItemsHost="true" 
      Grid.Row="0" KeyboardNavigation.TabIndex="1" /> 
     <ContentPresenter Grid.Row="1" x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="10" /> 
     </Grid> 
    </ControlTemplate> 
    </Setter.Value> 
</Setter> 

然後用這個如下

<TabControl Style="{StaticResource MyTabControl}" .... 

您可以下載該控件模板樣本here

+0

WrapPanel爲我做了詭計 – 2017-06-12 06:42:38

相關問題