LoginSignup
6
4

More than 5 years have passed since last update.

[WPF] TabControlのタブを左に配置する

Last updated at Posted at 2017-02-12

WPFのTabControlでタブの表示位置を変えたかったのでやり方を調査したまとめ。

TL;DR

今回は左側に文字列も回転させた状態で表示したかったため、以下のようになりました。

tab_exsample.png

実装例
<TabControl TabStripPlacement="Left">
    <TabControl.Resources>
        <Style TargetType="{x:Type TabItem}">
            <Setter Property="LayoutTransform">
                <Setter.Value>
                    <TransformGroup>
                        <RotateTransform Angle="90"/>
                    </TransformGroup>
                </Setter.Value>
            </Setter>
        </Style>
    </TabControl.Resources>
    <TabItem Header="Header1"></TabItem>
    <TabItem Header="Header2"></TabItem>
    <TabItem Header="Header3"></TabItem>
    <TabItem Header="Header4"></TabItem>
    <TabItem Header="Header5"></TabItem>
    <TabItem Header="Header6"></TabItem>
    <TabItem Header="Header7"></TabItem>
</TabControl>

説明(詳細)

WPFのデフォルトレイアウト

WPFでのデフォルトのTabControlは以下のように上側に表示されます。

tab1.png

タブの表示位置を変更する

タブの表示位置を変更するには TabControlTabStripPlacement を変更します。今回は Left を指定してます。

tab2.png

タブの文字の向きを変更する

タブのヘッダーの文字の向きを変更するには、LayoutTransform を変更します。
(RenderTransform だとレイアウトに反映されないため、LayoutTransform を使用する)
タブの一つ一つに指定するのは大変なので、Style 設定で TabItem 全てに適用します。
以下は、文字の向きを90度回転させた例になります。

tab3.png

特定のテーマ等を事前に読み込んでいる場合は、Styleの箇所に該当のものを BaseOn で継承してください。

関連

DragablzのTabablzControlでの方法

dragablz.png

マテリアルデザインでタブコントロールを使いたい場合に、同作者のDragablzを使う場合で文字を回転させたい場合は以下を参照すればいいです。SidePanels のサンプルがそのままつかえるはずです。

c# - WPF :Material Design + dragablz tabItem header style - Stack Overflow
DragablzSamplez/MainWindow.xaml at master · ButchersBoy/DragablzSamplez

参考

TabControl rotate to 90 degree
RenderTransformプロパティとLayoutTransformプロパティの違い - Yuya Yamaki’s blog

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4