添加键绑定以控制特定的上下文菜单

时间:2016-03-11 16:11:13

标签: c# wpf contextmenu menuitem attachedbehaviors

我无法让键盘快捷键处理属于特定控件的上下文菜单项,我想知道是否有人可以帮助我。

用例:我尝试编写可以应用于各种元素的附加行为,以便为这些控件提供撤消/重做上下文菜单功能。上下文菜单部分正在运行,但键绑定似乎无法正常工作。

到目前为止我已尝试过:

尝试1:

var menu = new ContextMenu();
var undoCommand = new DelegateCommand(Undo);
var undoMenuItem = new MenuItem
{
     Header = "Undo",
     Command = undoCommand,
     InputGestureText = "Ctrl+Z",
};

menu.Items.Add(undoMenuItem);
AssociatedObject.ContextMenu = menu; // AssociatedObject is a textbox as an example

尝试2:

var menu = new ContextMenu();
var undoCommand = new DelegateCommand(Undo);
var undoMenuItem = new MenuItem
{
    Header = "Undo",
    Command = undoCommand,
};

undoMenuItem.InputBindings.Add(new InputBinding(undoCommand, 
    new KeyGesture(Key.Z, ModifierKeys.Control)))

menu.Items.Add(undoMenuItem);
AssociatedObject.ContextMenu = menu; // AssociatedObject is a textbox as an example

这些似乎都不起作用。可以从UI中选择上下文菜单(例如,右键单击文本框并选择"撤消")但不会触发键盘快捷键。

有没有办法在附加行为中执行此操作?如果可能的话,我希望避免访问我附加行为中的基础Window元素,并希望密钥在各自的范围内工作(例如,只有在文本框集中时才应Ctrl+Z导致该文本框上的撤消。)

非常感谢

0 个答案:

没有答案