07.タブの配置方法を設定する
タブは既定でTabContorolの上部に配置されます。この配置位置を変更するには、TabControlのTabStripPlacementプロパティを設定します。
TabPlacementプロパティには、下記に示すDock列挙体の値を指定します。
| メンバ名 | 説明 |
| Left | タブをTabControlの左側に配置する |
| Top | タブをTabControlの上側に配置する |
| Right | タブをTabControlの右側に配置する |
| Bottom | タブをTabControlの下側に配置する |
下記は、タブの配置方法を設定する例です。
「上」「右」「下」「左」と書かれたラジオボタンコントロールをクリックすると、タブの配置が変更されます。

<StackPanel>
<StackPanel Orientation="Horizontal">
<RadioButton Name="radioButton1" Content="上" Margin="5" />
<RadioButton Name="radioButton2" Content="右" Margin="5" />
<RadioButton Name="radioButton3" Content="下" Margin="5" />
<RadioButton Name="radioButton4" Content="左" Margin="5" />
</StackPanel>
<!-- Top を指定してタブを上に配置する-->
<TabControl Name="TabControl1" TabStripPlacement="Top" Height="240">
<TabItem Header="TabItem1" Name="TabItem1">
<Grid />
</TabItem>
<TabItem Header="TabItem2" Name="TabItem2">
<Grid />
</TabItem>
<TabItem Header="TabItem3" Name="TabItem3">
<Grid />
</TabItem>
</TabControl>
</StackPanel>
' タブヘッダーを上に配置する
Private Sub radioButton1_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles radioButton1.Checked
TabControl1.TabStripPlacement = Dock.Top
End Sub
' タブヘッダーを右に配置する
Private Sub radioButton2_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles radioButton2.Checked
TabControl1.TabStripPlacement = Dock.Right
End Sub
' タブヘッダーを下に配置する
Private Sub radioButton3_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles radioButton3.Checked
TabControl1.TabStripPlacement = Dock.Bottom
End Sub
' タブヘッダーを左に配置する
Private Sub radioButton4_Checked(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles radioButton4.Checked
TabControl1.TabStripPlacement = Dock.Left
End Sub
// タブヘッダーを上に配置する
private void radioButton1_Checked(object sender, RoutedEventArgs e)
{
tabControl1.TabStripPlacement = Dock.Top;
}
// タブヘッダーを右に配置する
private void radioButton2_Checked(object sender, RoutedEventArgs e)
{
tabControl1.TabStripPlacement = Dock.Right;
}
// タブヘッダーを下に配置する
private void radioButton3_Checked(object sender, RoutedEventArgs e)
{
tabControl1.TabStripPlacement = Dock.Bottom;
}
// タブヘッダーを左に配置する
private void radioButton4_Checked(object sender, RoutedEventArgs e)
{
tabControl1.TabStripPlacement = Dock.Left;
}
タブの配置を変更するにはTabStripPlacementプロパティにDock列挙体の値を指定する。
08.タブにイメージを表示する
タブにイメージを表示するには、TabItemにImageを配置します。下記は、タブにイメージとテキストを表示する例です。
TabItemにStackPanelを配置し、その中にImageとTextBlockを配置しています。

<TabControl Name="tabControl1" Height="120">
<TabItem Name="tabItem1">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<Image Source="./Images\book_addressHS.png" Width="16" Height="16" Margin="2"/>
<TextBlock Text="Header1" />
</StackPanel>
</TabItem.Header>
<Grid />
</TabItem>
<TabItem Name="tabItem2">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<Image Source="./Images\Book_angleHS.png" Width="16" Height="16" Margin="2"/>
<TextBlock Text="Header2" />
</StackPanel>
</TabItem.Header>
<Grid />
</TabItem>
</TabControl>
Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
Dim tabItem3 As New TabItem
Dim stackPanel As New StackPanel
Dim bi As New BitmapImage
Dim img As New Image
Dim tbName As New TextBlock
'Imageの設定
bi.BeginInit()
bi.UriSource = New Uri("Images/Book_openHS.png", UriKind.Relative)
bi.EndInit()
img.Source = bi
img.Height = 16
img.Width = 16
img.Margin = New Thickness(2.0)
'TextBlockの設定
tbName.Text = "Header3"
'水平方向に配置
stackPanel.Orientation = Orientation.Horizontal
'StackPanelにImageとTextBlockを追加
stackPanel.Children.Add(img)
stackPanel.Children.Add(tbName)
'ヘッダーにStackPanelを配置
tabItem3.Header = stackPanel
'タブコントロールに作成した tabItem3 を追加
TabControl1.Items.Add(tabItem3)
End Sub
private void Window_Loaded(object sender, RoutedEventArgs e)
{
TabItem tabItem3 = new TabItem();
StackPanel stackPanel = new StackPanel();
BitmapImage bi = new BitmapImage();
Image img = new Image();
TextBlock tbName = new TextBlock();
// Imageの設定
bi.BeginInit();
bi.UriSource = new Uri("Images/Book_openHS.png", UriKind.Relative);
bi.EndInit();
img.Source = bi;
img.Height = 16;
img.Width = 16;
img.Margin = new Thickness(2.0);
// TextBlock の設定
tbName.Text = "Header3";
// 水平方向に配置
stackPanel.Orientation = Orientation.Horizontal;
// StackPanelにImageとTextBlockを追加
stackPanel.Children.Add(img);
stackPanel.Children.Add(tbName);
// ヘッダーにStackPanelを配置
tabItem3.Header = stackPanel;
// タブコントロールに作成した tabItem3 を追加
tabControl1.Items.Add(tabItem3);
tabItem3.Header = stackPanel;
}
タブにイメージを表示するにはTabItemにイメージを追加する。
