2015-09-18 58 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

相关问题