2014-09-22 25 views
0

我有一个窗口(与屏幕上的键盘)在另一个窗口的用户控制之上。Scrollviewer与焦点混杂

我想要当用户在键盘窗口外点击时,要关闭的键盘窗口。为此,我使用onlostFocus和Deactivated事件,其中我称之为HideKeyboardWindow()方法。

在用户控制中,我有一个1行的网格。当键盘打开时,我点击网格的一行,HideKeyboardWindow()不会被调用。但是,当我用ScrollViewer包装该行时,则调用HideKeyboardWindow()。

为什么scrollviewer搞乱焦点?

+0

有可能你没有提供任何宽度或高度到你的键盘窗口,这就是为什么它得到issue.please尝试设置最小宽度到您的键盘网格行,然后检查 – 2014-09-22 11:08:01

+0

@AshokRathod键盘窗口已定义的高度和宽度。 – 2014-09-22 11:14:19

回答

0

GotFocus事件不适合用于您的目的,因为它可能会在不适当的时候引发,例如,当用户将鼠标悬停在键盘的内部控件上时。更好的解决方案是简单地将附加的MouseDown处理程序附加到父控件。当父处理程序收到事件时,用户已在键盘控件外部单击。

+0

但父控件是位于另一个窗口中的用户控件中的一个网格。有很多家长控制。我无法向他们全部添加事件。 – 2014-09-22 11:13:48

+1

不,我的意思是顶级父母......我很肯定你只有其中一个。在该控件中使用'MouseDown'处理程序,并在键盘控件中使用'PreviewMouseDown'处理程序,以便在父事件之前引发该处理程序。 – Sheridan 2014-09-22 11:16:18

+0

顶级父项的MouseDown事件不会被调用。 – 2014-09-22 11:25:14