ボタンの上で右クリックメニュー表示ではなく、ウィンドウどこでも右クリックでメニューを表示する方法の備忘録です。
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)
{
}