[WinUI 3][TabView] [+]ボタンをクリックして新しいタブを追加する

スポンサーリンク

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 の一覧はこちらから確認できます。

Please follow and like us:

コメント

タイトルとURLをコピーしました