【发布时间】:2012-01-10 15:33:58
【问题描述】:
我正在尝试使用 WPF 窗口中的 WindowsFormsHost 控件将 XNA 集成到 WPF 窗口中。我有一个非常奇怪的问题,每当 XNA 运行时,我的 WPF 窗口控件的键盘输入都不起作用。更奇怪的是,并非所有键都发生这种情况。它发生在所有字母和数字上,但是,例如,退格键或删除键工作。我首先认为这是由于 XNA 连接到键盘输入并处理所有按键,并且事件没有被路由到我的 WPF 窗口。但奇怪的是,它们确实由 OnKeyDown 处理。我创建了一个从普通 TextBox 派生的自定义 TextBox 类,覆盖了 OnKeyDown,在其中放置了一个断点,并且它起作用了。调试器踩到断点。所以我错了:XNA 没有阻止关键事件到达 WPF 窗口(或其控件),我的 TextBox 得到了正确的键盘事件,但它不起作用。我在键盘上按“A”,调用 OnKeyDown,但它不会将“A”附加到文本框中。另一方面,退格键正常工作。我使用鼠标右键单击将一些文本复制粘贴到字段中,然后单击文本的中间(箭头也不起作用),我可以通过按退格键删除文本,但我无法输入任何内容。
可能是什么原因?我对 WPF 的输入处理不是很擅长,但通常,如果我的 TextBox 确实收到 OnKeyDown 事件(使用正确的参数),它应该附加我按下的字母。一旦我结束 XNA 游戏,事情就会开始正常运行。控件行为异常的原因可能是什么?
【问题讨论】:
标签: wpf xna keyboard-events