#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. Вам нужно найти какую-то другую проблему.