WPF window.close()的未触发UserControl.Unloaded事件(WPF W

2019-07-20 06:40发布

我有一个包含一个自定义的用户控件的窗口。 在用户控件需要知道何时包含它的窗口已经关闭,以便它可以终止线程。

我最好的猜测是如何做到这一点是处理用户控件的空载事件。 然而,空载事件似乎只在用户实际点击关闭窗口进行发射,而不是当我编程方式调用窗口上的Close()方法。

为了便于参考,这里有一些我的代码的相关部分。

MyWindow.xaml:

<Window x:Class="Namespace.MyWindow"
        xmlns:controls="clr-namespace:Namespace.Controls">
    <controls:MyControl/>
</Window>

MyControl.xaml:

<UserControl x:Class="Namespace.Controls.MyControl"
             Unloaded="UserControl_Unloaded"/>
    <!-- Stuff -->
</UserControl>

MyControl.xaml.cs:

void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
    // Stop the thread.
}

因此,只要回顾一下,在UserControl_Unloaded()方法时,我关闭该窗口中的“手动”上面获取调用(ALT-F4,点击红色的“X”等),而不是在从代码的其他地方我称之为myWindow.Close() 有任何想法吗?

Answer 1:

原来,在回答这个问题解决了这个问题对我来说,太。 它仍然似乎很奇怪,不过,卸载的事件不会被解雇。 去搞清楚。



Answer 2:

在mywindow的类

this.Closing += new System.ComponentModel.CancelEventHandler(Window1_Closing);


void Window1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            call User Control Method()

        }


Answer 3:

为什么只是没有处理程序连接到window.Closed事件? 你的用户控件可以通过UI树走,找到窗口。



文章来源: WPF Window.Close() not triggering UserControl.Unloaded event