[WinUI 3][MenuBar] メニューが選択されたことを知る

スポンサーリンク

この記事では、メニューが選択されたことを知る方法について説明します。

環境

開発環境 Microsoft Visual Studio Enterprise 2019
Version 16.11.5
Framework Microsoft .NET Framework Version 4.8.04161

メニューが選択されたことを知る

メニューの項目は、MenuFlyoutItem で作成することができますが、「選択された」ということを知りたい場合は、Click イベントを使用します。

以下は 「ファイル」配下にある「新規」「開く」「保存」「終了」の Click イベントを作成し、メニューが選択された時にメッセージを表示する例です。

XAML の例

<Window
    x:Class="WinUIAppSample.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:WinUIAppSample"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left">
        <MenuBar>
            <MenuBarItem Title="ファイル">
                <MenuFlyoutItem x:Name="menuFileNew" Text="新規" Click="MenuFlyoutItem_Click"/>
                <MenuFlyoutItem x:Name="menuFileOpen" Text="開く..." Click="MenuFlyoutItem_Click"/>
                <MenuFlyoutItem x:Name="menuFileSave" Text="保存" Click="MenuFlyoutItem_Click"/>
                <MenuFlyoutSeparator />
                <MenuFlyoutItem x:Name="menuFileExit" Text="終了" Click="MenuFlyoutItem_Click"/>
            </MenuBarItem>
        </MenuBar>

        <StackPanel>
            
        </StackPanel>
    </StackPanel>
</Window>

C# の例

private async void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)
{
    var msg = "";
    switch (((MenuFlyoutItem)sender).Name)
    {
        case "menuFileNew":
            msg = "「新規」が選択されました。";
            break;
        case "menuFileOpen":
            msg = "「開く」が選択されました。";
            break;
        case "menuFileSave":
            msg = "「保存」が選択されました。";
            break;
        case "menuFileExit":
            msg = "「終了」が選択されました。";
            break;
    }

    ContentDialog myDialog = new ContentDialog
    { 
        Title = "メニュー選択", 
        Content = msg, 
        CloseButtonText = "OK" 
    }; 
    myDialog.XamlRoot = this.Content.XamlRoot; 
    ContentDialogResult result = await myDialog.ShowAsync();
}
メニューが選択されたことを知る例

メニューが選択されたことを知る例

Please follow and like us:

コメント

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