У меня есть окно, в котором я обрабатываю событие Closing в пользовательской функции.В XAML я установил следующее:
<ext:ExtendedWindow x:Name="Window1" Closing="Window_Closing">
Эта функция объявлена в коде следующим образом:
private void Window_Closing(object sender, CancelEventArgs e)
{
Closing -= Window_Closing;
e.Cancel = true;
Storyboard storyboard = this.CloseWindowWidthAnimation(0f);
storyboard.Completed += CloseWindow;
storyboard.Begin();
}
private void CloseWindow(object sender, EventArgs e)
{
this.Close();
}
Window_Closing отменяет закрывающее событие и воспроизводит анимацию наокно (ширина уменьшается до 0).К событию Completed я добавляю функцию, которая, наконец, закрывает окно после воспроизведения анимации.CloseWindowWidthAnimation - это статический метод в классе помощника, который просто возвращает раскадровку.ExtendedWindow имеет базовый класс Window и имеет лишь несколько свойств зависимости для обработки цветовых схем.
Когда функция Close завершает выполнение и включена функция Just My Code, появляется экран «режима прерывания».Продолжение сеанса отладки завершает работу приложения, но я думаю, что это известная проблема .Когда функция «Просто мой код» отключена, отображается следующая ошибка:
This Visual is not connected to a PresentationSource.
Ошибка показывает , когда окно фактически было закрыто после выхода из CloseWindow.Я думаю, что это как-то связано с раскадровкой / анимацией, поскольку не выдает ошибку, когда я не перезаписываю событие Closing.Когда я собираю приложение и запускаю исполняемый файл, оно не падает, и я не улавливаю ошибку где-то.Я думаю, что это как-то связано с раскадровкой, но ошибка не очень описательная, и я не смог ничего найти по этому поводу.Поэтому мой вопрос заключается в следующем:
Что может быть причиной такого поведения?Что я мог сделать, чтобы это исправить?
Обновление: Окно стека вызовов (основной поток)
