У меня есть окно, содержащее пользовательский UserControl. UserControl должен знать, когда Окно, содержащее его, было закрыто, чтобы он мог завершить поток.
Мое лучшее предположение о том, как это сделать, - это обработать событие UserControl Unloaded. Тем не менее, событие Unloaded, похоже, срабатывает, когда пользователь на самом деле нажимает, чтобы закрыть окно, но не тогда, когда программным способом вызывается метод 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()
. Любые идеи?