我有一个包含自定义UserControl的窗口。 UserControl需要知道包含它的Window何时被关闭,以便它可以终止线程。
我认为最好的方法是处理UserControl的Unloaded事件。然而,当我在程序中调用Close()方法关闭窗口时,Unloaded事件似乎只会在用户实际点击关闭窗口时触发,而不会自动触发。
以下是我的代码中相关部分的参考。
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>
我的控件.xaml.cs:
void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
// Stop the thread.
}
所以简单概括一下,上面的UserControl_Unloaded()方法会在我“手动”关闭窗口(alt-F4、点击红色“X”等)时被调用,但是当我从代码中其他地方调用myWindow.Close()
时却没有被调用。有什么想法吗?