我到处搜索寻找这个问题的答案,但一无所获。其他人似乎都有自定义上下文菜单,并希望从那里获取所选项目。
在我的视图类中,我有几个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()”不存在。我的问题的答案是该方法的实现。
答案 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
}