上下文菜单打开之前的事件

4
在这个简单的示例中,我想在显示上下文菜单之前展示一个“MessageBox”对话框。我在XAML中编写了以下代码:
<Border>
    <Border.ContextMenu>
        <ContextMenu ContextMenuOpening="ContextMenu_ContextMenuOpening">
            <MenuItem Header="Select pic" IsEnabled="{Binding Path=ProductSelected}" />
            <MenuItem Header="Paste pict" Name="miPaste" Click="miPaste_Click"/>
        </ContextMenu>
    </Border.ContextMenu>
    <Image Stretch="Fill" Source="{Binding Path=Product.Picture}" />
</Border>

我会在´CS´中写下以下内容:

private void ContextMenu_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
    MessageBox.Show("OPPENING");
}

我不知道为什么,当我按下鼠标右键时,上下文菜单出现了,但是消息框从未显示。


你尝试使用过 PreviewMouseDown 吗? - Dean Kuga
@kzen 我已经尝试过了,但是它仍然无法正常工作 :s - Jaime Oro
1个回答

11

我认为ContextMenuOpening事件应该定义在打开上下文菜单的控件上,而不是上下文菜单本身。请查看下面的代码是否适用于您:

<Border ContextMenuOpening="ContextMenu_ContextMenuOpening">
    <Border.ContextMenu>
        <ContextMenu >
            <MenuItem Header="Select pic" />
            <MenuItem Header="Paste pict" Name="miPaste" />
        </ContextMenu>
    </Border.ContextMenu>
</Border>
希望这能有所帮助,敬礼。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接