【发布时间】:2014-04-15 10:31:33
【问题描述】:
我有一个应用程序,当某些 UIElements 获得焦点(TextBox、PasswordBox 等)时,它必须打开屏幕键盘。我在 MainWindow 上使用 GotKeyboardFocus 和 LostKeyboardFocus 来实现这一点:
this.GotKeyboardFocus += AutoKeyboard.GotKeyboardFocus;
this.LostKeyboardFocus += AutoKeyboard.LostKeyboardFocus;
一切都很好,除非我打开一个包含自己的文本框的新窗口。显然,由于它们不是 MainWindows routedEvent 的一部分,它们不会触发键盘焦点事件。有没有办法让所有子窗口从 MainWindow 继承 GotKeyboardFocus 或让它将键盘焦点事件传回其父窗口?
【问题讨论】:
-
创建子窗口的时候,为什么不呢:
childWindow.GotKeyboardFocus += AutoKeyboard.GotKeyboardFocus; -
我已经完成了大部分工作,但有两个主要问题。首先是整个应用程序中有很多子窗口。将这条线添加到它们都是可能的,如果这是唯一的解决方案,我会这样做。更大的问题是我们的一些窗口使用来自其他库的用户控件。其中一些控件会打开它们自己的私有窗口,我们不允许更改这些库中的代码。