我的表格中有一个树视图。它有一个与之关联的上下文菜单条。 上下文菜单条包含以下项目: - 创建新节点,创建子节点,重命名节点,删除节点。 我有所有这些项目的快捷方式。
我的问题是,当我创建一个新节点(输入节点的文本)时,如果我按 Ctrl + S (用于创建子节点的快捷键),它将触发click事件"创建子节点"项目。
对于上下文菜单条中的所有项目都会发生这种情况。
现在, 1.当我还在编辑或创建节点时,如何停止快捷键的触发? 2.在编辑或创建节点期间,是否有任何属性或事件需要处理以阻止快捷键触发相应的事件?
需要尽快解决此问题。
感谢。
答案 0 :(得分:0)
根据您输入新节点名称的位置,您可以订阅树视图的PreviewKeyDown
事件或树视图项。
要防止某个按键触发快捷键,可以将processed属性设置为true。以下示例假定您在文本框中输入新节点的名称。
private void UIElement_OnKeyDown(object sender, KeyEventArgs e)
{
if (sender is TextBox && (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl))
{
e.Handled = true;
}
}
这个想法是,防止任何快捷方式发生,只要它们来自文本框。由于只处理了控制键,因此不应该吞下您可能要为名称输入的任何其他键。