2

WPFでは、選択したTabItemが変更されたときにTabControlのTabItemsが再配置されないようにする簡単な方法はありますか? そのため、TabItem をクリックするとその内容が表示されるだけで、通常のように TabItem の位置を変更することはありません (選択した TabItem がタブの一番下の行に移動されていない場合は移動します)。

編集: 明確にするために、タブを複数の行に表示したいのですが、一番下の行以外の行の TabItem が選択されたときにタブヘッダーを再配置したくありません。ヘッダーのコレクションを完全に静的のままにしたいのですが、ヘッダーをクリックしたときにその TabItem のコンテンツが引き続き表示されるようにします。

ありがとう!

4

2 に答える 2

6

遅いことはわかっていますが、今日これを理解しなければならなかったので、ここに行きます。

基本的に、タブ コントロール用に独自のコントロール テンプレートを作成し、別のパネルを使用してタブ項目を含める必要があります。

以下は、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}" ....

ここからコントロール テンプレートのサンプルをダウンロードできます。

于 2010-07-19T17:10:09.213 に答える
0

Blend を使用している場合は、タブ コントロールのテンプレートのコピーを編集して、この動作を削除できます。

于 2010-05-11T14:46:48.433 に答える