我无法让键盘快捷键处理属于特定控件的上下文菜单项,我想知道是否有人可以帮助我。
用例:我尝试编写可以应用于各种元素的附加行为,以便为这些控件提供撤消/重做上下文菜单功能。上下文菜单部分正在运行,但键绑定似乎无法正常工作。
到目前为止我已尝试过:
尝试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
导致该文本框上的撤消。)
非常感谢