【WPF】右クリックでメニュー(ContextMenu)を表示する
2026-05-04
ボタンの上で右クリックメニュー表示ではなく、ウィンドウどこでも右クリックでメニューを表示する方法の備忘録です。
XAMLでContextMenuを作成する
ウィンドウ全体の当たり判定を付ける
デフォルトだと、
<Window x:Class=~
Title="MainWindow" Height="450" Width="450">
<Grid>
</Grid>
</Window>
とかになっていると思います。 ここの
<Grid></Grid>
に当たり判定として
Background="#ffffff"
のような背景色を設定しておきます。
これが無いとGrid内のTextBlock要素の上を右クリックしたときしかメニューが表示されません。
GridにContextMenuを追加
Gridの中に
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="メニュー" Click=""/>
<MenuItem Header="メニュー2" Click=""/>
</ContextMenu>
</Grid.ContextMenu>
を入れましょう。 これで右クリックメニューができました。
メニュー要素を選択したときの処理
xaml.csなどで、
private void Menu_Click(object sender, RoutedEventArgs e)
{
}
を追加して、中にそれぞれの処理を書いていきます。
Menu_ClickはXAMLのClick=““と揃えましょう。
全体のコード
xaml
<Window ~
Title="MainWindow" Height="450" Width="450">
<Grid Background="#ffffff">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="メニュー" Click="Menu_Click"/>
<MenuItem Header="メニュー2" Click="Menu2_Click"/>
</ContextMenu>
</Grid.ContextMenu>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24" Text="右クリックでメニュー表示"/>
</Grid>
</Window>
xaml.cs
private void Menu_Click(object sender, RoutedEventArgs e)
{
}
private void Click="Menu2_Click"(object sender, RoutedEventArgs e)
{
}