【发布时间】:2011-08-06 11:24:13
【问题描述】:
在 WPF 应用程序中拦截按键并处理它们的最佳方法是什么,避免焦点控制获得按键?
我需要应用程序处理一系列按键(包括箭头键)并避免具有焦点的控件(即 Treeview)获取按键事件。我已经看到了使用 interop 执行此操作的方法,但希望 WPF 应用程序中本机支持此操作?
谢谢。
【问题讨论】:
在 WPF 应用程序中拦截按键并处理它们的最佳方法是什么,避免焦点控制获得按键?
我需要应用程序处理一系列按键(包括箭头键)并避免具有焦点的控件(即 Treeview)获取按键事件。我已经看到了使用 interop 执行此操作的方法,但希望 WPF 应用程序中本机支持此操作?
谢谢。
【问题讨论】:
您可以附加到应用程序中根元素的PreviewKeyDown 事件,该元素通常是一个窗口。如果您将 e.Handled 设置为 true,那么您通常会阻止其他任何东西获取 PreviewKeyDown 或 KeyDown 事件。
此外,您可能需要处理PreviewTextInput 事件,因为这是文本框或其他编辑器通常使用的。
【讨论】: