当我使用
如何确保在以编程方式打开上下文菜单时触发
<control>.ContextMenu.IsOpen = true
打开上下文菜单时,上下文菜单变为可见状态,但是没有触发打开或关闭事件。如何确保在以编程方式打开上下文菜单时触发
ContextMenuOpening
和ContextMenuClosing
事件?
演示:
请查看以下XAML代码:<Button Name="ContextMenuButton"
Content="Click me!"
Click="ContextMenuButton_Click"
ContextMenuOpening="ContextMenuButton_OnContextMenuOpening"
ContextMenuClosing="ContextMenuButton_OnContextMenuClosing">
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="First element" />
<MenuItem Header="Second element" />
</ContextMenu>
</Button.ContextMenu>
</Button>
以下是与此相关的代码:
public MainWindow() // Constructor
{
InitializeComponent();
ContextMenuButton.ContextMenuOpening += (sender, args) => Debug.Print("Opening #2");
ContextMenuButton.ContextMenuClosing += (sender, args) => Debug.Print("Closing #2");
}
private void ContextMenuButton_Click(object sender, RoutedEventArgs e)
{
Button button = (sender as Button);
button.ContextMenu.IsOpen = true; // How should I open the ContextMenu?
}
private void ContextMenuButton_OnContextMenuOpening(object sender, ContextMenuEventArgs e)
{
Debug.Print("Opening #1");
}
private void ContextMenuButton_OnContextMenuClosing(object sender, ContextMenuEventArgs e)
{
Debug.Print("Closing #1");
}
右键单击按钮时的行为:
上下文菜单将打开。
输出结果是:
Opening #1
Opening #2
Closing #1
Closing #2
点击按钮时的行为:
上下文菜单会打开。
输出结果为:
<Nothing>