我尝试了各种解决方案,例如在此处找到的解决方案,它具有以下公认的答案:
<Button ContextMenuClosing="ContextMenu_ContextMenuClosing">
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="Go"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
Run Code Online (Sandbox Code Playgroud)
但是,在实施了上述解决方案后,无论它如何关闭(进行选择、单击父按钮、单击菜单或按钮外的任意位置),我仍然无法成功侦听 ContextMenuClosing 事件。下面是我的代码,我做错了什么?
测试页面.xaml
<Page x:Class="MyProject.pages.TestPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MIMOUI.pages"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="300"
Title="TestPage">
<Grid>
<Button x:Name="myMenuButton"
Width="140"
Height="100"
Click="myMenuButton_Click"
ContextMenuClosing="myMenuButton_ContextMenuClosing"
Background="NavajoWhite"
Foreground="BurlyWood">
<Button.ContextMenu>
<ContextMenu x:Name="myMenuButton_ContextMenu" Width="250">
<MenuItem x:Name="myTaskMenuButton" Header="TASKS" />
<MenuItem x:Name="myTransactionButton" Header="TRANSACTION" />
<MenuItem x:Name="mySetupMenuButton" Header="SETUP" />
</ContextMenu>
</Button.ContextMenu>
</Button>
</Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)
测试页.xaml.cs
using System;
using System.Windows;
using System.Windows.Controls;
namespace MyProject.pages {
public partial class TestPage : Page {
public TestPage() {
InitializeComponent();
}
public …Run Code Online (Sandbox Code Playgroud)