TabView は、タブの並びに [+]ボタンを表示することができますが、この [+]ボタンの処理は自分で実装する必要があります。
この記事では TabView で[+]ボタンが押された時に、新規でタブを追加する方法について説明します。
公式サイト情報はコチラを参照してください。
環境
| 開発環境 | Microsoft Visual Studio Enterprise 2019 Version 16.11.5 |
| Framework | Microsoft .NET Framewohttps://blog.hiros-dot.net/?p=11007rk Version 4.8.04161 |
タブの並びに [+]ボタンを表示する
タブの並びに [+] ボタンを表示するには、 IsAddTabButtonVisible プロパティに True を設定します。既定値は True になっています。
以下に XAML のコード例を示します。
XAML の例
<Window
x:Class="WinUISample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WinUISample"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<TabView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
x:Name="myTabView"
IsAddTabButtonVisible="True">
<TabView.TabItems>
<TabViewItem x:Name="myTab1" Header="Home">
<StackPanel>
<TextBlock Text="Home Content" />
</StackPanel>
</TabViewItem>
</TabView.TabItems>
</TabView>
</Window>
[+] ボタンクリック時にタブを追加する
[+] ボタンのクリックイベントは AddTabButtonClick に設定します。
以下の XAML は ボタンがクリックされた時に(つまりAddTabButtonClickに)
TabView_AddTabButtonClick というイベントハンドラが実行されるようにする例です。
<Window
x:Class="WinUISample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WinUISample"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<TabView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
x:Name="myTabView"
IsAddTabButtonVisible="True"
AddTabButtonClick="TabView_AddTabButtonClick">
<TabView.TabItems>
<TabViewItem x:Name="myTab1" Header="Home">
<StackPanel>
<TextBlock Text="Home Content" />
</StackPanel>
</TabViewItem>
</TabView.TabItems>
</TabView>
</Window>
次に TabView_AddTabButtonClick イベントの実装例を以下に示します。
はじめに TabViewItem を作成し(4行目)、ヘッダーとアイコンの設定をします(7,8行目)。
次に、タブ内のコンテンツ配置場所として、StackPanel を追加します(12,13行目)。
最後に、作成した TabViewItem を TabView に追加します(16行目)。
C# の例
private void TabView_AddTabButtonClick(Microsoft.UI.Xaml.Controls.TabView sender, object args)
{
// 新しいタブを作成する
TabViewItem newItem = new TabViewItem
{
// ヘッダーとアイコンの設定
Header = $"Document",
IconSource = new Microsoft.UI.Xaml.Controls.SymbolIconSource() { Symbol = Symbol.Document }
};
// StackPanel を作成して タブのコンテンツにする
StackPanel sp = new StackPanel();
newItem.Content = sp;
// 作成したタブを追加
myTabView.TabItems.Add(newItem);
}
任意の位置にタブを挿入する
新しく追加するタブは、任意の位置に挿入することもできます。
挿入する場合は、TabItems.Insert(挿入位置のインデックス, TabItem) を使用します。
先程のコード例の16行目を以下に書き換えると、インデックスが1の場所に(先頭から2番目)タブが挿入されます。
myTabView.TabItems.Insert(1,newItem);
WinUi Tips
本サイトでまとめている WinUI Tips の一覧はこちらから確認できます。

![[+]ボタンを追加する例](https://blog.hiros-dot.net/wp-content/uploads/2022/04/ScreenShot-70-1024x571.png)


コメント