[WinUI 3][MenuBar] 排他的なメニュー項目のチェック状態を設定する

スポンサーリンク

排他的なメニュー項目は RadioMenuFlyoutItem で作成することができます。今回は、RadioMenuFlyoutItem でチェック状態を設定する方法について説明します。

環境

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

任意のメニュー項目をチェック状態にする

RadioMenuFlyoutItem を使用したメニューは、IsChecked プロパティに True をセットすることであらかじめチェックを付けた状態にすることができます。既定値は False になっています。

XAML によるチェック状態の設定

以下は、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 Text="新規" Icon="Add"/>
                <MenuFlyoutItem Text="開く..." Icon="OpenFile"/>
                <MenuFlyoutItem Text="保存" Icon="Save"/>
                <MenuFlyoutSeparator />
                <MenuFlyoutItem Text="終了"/>
            </MenuBarItem>
            <MenuBarItem Title="モード">
                <RadioMenuFlyoutItem Text="自動" IsChecked="True"/>
                <RadioMenuFlyoutItem Text="ダークモード" />
                <RadioMenuFlyoutItem Text="ライトモード" />
            </MenuBarItem>
            <MenuBarItem Title="ヘルプ">
                <MenuFlyoutItem Text="このアプリについて" Icon="Help"/>
            </MenuBarItem>
        </MenuBar>

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

C#によるチェック状態の設定

以下は C#(コードビハインド) でメニュー項目 [モード]-[自動] にチェックを付ける例です。

C#から操作ができるように、メニュー項目にx:Name=”menuAuto” を設定しています。

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 Text="新規" Icon="Add"/>
                <MenuFlyoutItem Text="開く..." Icon="OpenFile"/>
                <MenuFlyoutItem Text="保存" Icon="Save"/>
                <MenuFlyoutSeparator />
                <MenuFlyoutItem Text="終了"/>
            </MenuBarItem>
            <MenuBarItem Title="モード">
                <RadioMenuFlyoutItem x:Name="menuAuto" Text="自動"/>
                <RadioMenuFlyoutItem x:Name="menuDarkMode" Text="ダークモード" />
                <RadioMenuFlyoutItem x:Name="menuLightMode" Text="ライトモード" />
            </MenuBarItem>
            <MenuBarItem Title="ヘルプ">
                <MenuFlyoutItem Text="このアプリについて" Icon="Help"/>
            </MenuBarItem>
        </MenuBar>

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

C#

public MainWindow()
{
    this.InitializeComponent();
    menuAuto.IsChecked = true;
}
任意のメニュー項目をチェック状態にする例

任意のメニュー項目をチェック状態にする例

Please follow and like us:

コメント

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