我有一个使用XNA编写的模块,它在后台线程上轮询GamePad和键盘,并调用一些回调。没有任何游戏课程。 我想在WPF应用程序中使用此模块,在回调上调用Dispatcher.BeginInvoke,并根据回调参数在显示器(不包含TextBox等)上进行一些更改。 它与GamePad完美配合,但Keyboard.GetState()。GetPressedKeys()数组总是空的! 我认为它与WPF消息循环有关,在我可以在XNA中轮询它们之前捕获键盘事件,或者xna没有设置键盘焦点。 你有什么建议吗?如何将键盘状态传递给XNA,所以我不必使用WPF类重写键盘处理? 感谢
答案 0 :(得分:0)
没关系,我把它搞定了!问题不在于焦点,而是在线程化!我在轮询类上公开了一个回调,当我想调用Keyboard.GetState()时,我调用了回调,它(在WPF中)是一个Dispatcher.Invoke(()=> poll.GetKeyboardState())调用,所以这次GetState()与WPF控件在同一个线程上,所以它有效! Hoorah!