2014-09-22 52 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