如何从默认的上下文菜单中获取所选项目

时间:2015-03-20 10:12:28

标签: c# wpf contextmenu

我到处搜索寻找这个问题的答案,但一无所获。其他人似乎都有自定义上下文菜单,并希望从那里获取所选项目。

在我的视图类中,我有几个TextBox,它们都有默认的上下文菜单,包含3个项目:剪切,复制和粘贴。 让我们说tb是一个TextBox,然后tb有一个ContextMenu属性,它有一个Items属性。我想以某种方式从这个Items集合中获取用户选择的项目,以便检查它是剪切,复制还是粘贴:

var selectedItem = getSelectedItem(tb.ContextMenu.Items);
bool IsPaste = selectedItem == Paste; // Paste might be Items[2] but I'm not sure

任何人都可以帮助我如何实现这样的目标吗?

已编辑:“getSelectedItem()”不存在。我的问题的答案是该方法的实现。

2 个答案:

答案 0 :(得分:0)

我想在这里你想把命令绑定到你的视图..

<MenuItem Command="{Binding Path=PlacementTarget.DataContext.MyCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />

如果不遵循命令模式,您也可以单击用户菜单项。在点击处理程序中,您将知道哪个菜单项已被点击,您可以在那里制作代码。

答案 1 :(得分:-2)

您必须向xml添加click事件。有点像...

<MenuItem Header="Paste" InputGestureText="Ctrl+V" Click="Paste_Click" />

private void Paste_Click(object sender, RoutedEventArgs e)
{
    //do something
}