Событие ContextMenuOpening не инициировано

#c# #wpf #xaml

#c# #wpf #xaml

Вопрос:

У меня есть кнопка с контекстным меню, но я просто могу вызвать событие ContextMenuOpening для запуска.

 <Button Name="a_button"
        ContextMenu="{StaticResource MyContextMenu}"
        ContextMenuOpening="MyContextMenu_Opening" >
</Button>

private void MyContextMenu_Opening(object sender, ContextMenuEventArgs e)
{
   // doesnt get here.
}
  

Есть идеи, как заставить это работать?

Спасибо.

Ответ №1:

Событие ContextMenuOpening должно обрабатываться в предке ContextMenu, а не в самом ContextMenu. Если вы попытаетесь обработать его в ContextMenu, событие срабатывает только при щелчке правой кнопкой мыши, когда ContextMenu уже открыто.

Ответ №2:

Я только что проверил ваш код, и он работает отлично.

Вот мой полный xaml:

 <Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Window.Resources>
        <ContextMenu x:Key="MyContextMenu">
            <MenuItem Header="Send" />
        </ContextMenu>
    </Window.Resources>
    <Grid>
        <Button Name="a_button"
                ContextMenu="{StaticResource MyContextMenu}"
            ContextMenuOpening="MyContextMenu_Opening" >
        </Button>
    </Grid>
</Window>
  

И *.cs:

     private void MyContextMenu_Opening(object sender, ContextMenuEventArgs e)
    {

    }
  

Комментарии:

1. Очень странно, не могу понять, почему оно не работает, выглядит отлично.

2. Вам нужно найти какую-то другую проблему.