メニュー項目のチェックボックスをデータバインディングで管理するサンプルコードです。
・初期はチェック付き

・選択するとチェックが外れる

MainWindow.xaml
<Window x:Class="WpfCheckMenuDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfCheckMenuDemo"
mc:Ignorable="d"
Title="WpfCheckMenuDemo" Height="200" Width="300">
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<DockPanel>
<!-- 上:メニュー -->
<Menu
DockPanel.Dock="Top"
FontSize="14">
<MenuItem Header="_File">
<MenuItem
Header="チェック付き"
IsCheckable="True"
IsChecked="{Binding IsStatusBarVisible, Mode=OneWay}"
Command="{Binding ToggleStatusBarCommand}"/>
</MenuItem>
</Menu>
</DockPanel>
</Window>
Mode=OneWayを付けないと、ずっとtrueのまま
MainWindowViewModel.cs
using Maywork.WPF.Helpers;
namespace WpfCheckMenuDemo;
class MainWindowViewModel : ViewModelBase
{
private bool _isStatusBarVisible = true;
public bool IsStatusBarVisible
{
get => _isStatusBarVisible;
set => SetProperty(ref _isStatusBarVisible, value);
}
public RelayCommand ToggleStatusBarCommand { get; }
public MainWindowViewModel()
{
ToggleStatusBarCommand = new RelayCommand(_ => ToggleStatusBar());
}
private void ToggleStatusBar()
{
IsStatusBarVisible = !IsStatusBarVisible;
}
}
ViewModelBase.cs
RelayCommand.cs

コメント