2015-09-18 93 views
0

我寫了一個自定義的wpf usercontrol訂閱LostFocus事件。但我有問題,如果UserControl有焦點並且包含該控件的窗口將被關閉,該事件也會被解僱。如果窗口關閉,我不想讓事件觸發,只有當用戶使用鼠標或選項卡通過UI元素選擇antoher控件時。如何防止丟失的焦點事件在窗口關閉時調用

編輯

作爲一個重要的信息,我沒有訪問Window例如在用戶控件。

EDIT 2

這將是很好,如果有一個解決方案,它不僅工作窗口關閉,因爲也可關閉的TabItems和所有similiar事情。一般來說,如果我們可以說,如果UserControl可見性將更改爲不可見。

非常感謝。

+0

這是什麼問題引起的? –

+0

如果焦點丟失,我驗證UserControl中的值。此驗證將打開另一個窗口,如果窗口關閉時發生此情況,則不應該這樣。 – BendEg

回答

3

「我沒有訪問Window實例在用戶控制」

是的,你做的事:

Window parentWindow = Window.GetWindow(userControlReference); 

答案,在你UserControl.Loaded,或您想任何其他地方,您需要使用上面的代碼來獲取對父窗口的引用,並訂閱Closing事件。在事件處理程序中,只需設置本地屬性或其他內容即可告訴您的方法不會繼續執行。

請記住,您需要調用Window.GetWindow方法AFTER您的用戶控件已完全加載。你可以使用而不是在你的用戶控件的contstructor中使用它,否則它將返回null。而是使用Loaded事件或類似事件。

+0

謝謝,但這個問題沒有得到很好的解釋。如果有一些可靠的TabItem或類似的東西會發生什麼。我試圖尋找一個通用的解決方案。 – BendEg

相關問題