Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

Выполнение кода после окончания анимации

#c_sharp #wpf


Проблема заключается в том что скрытие формы выполняется сразу, а не после анимации.
Как добиться того что бы после окончания анимации выполнялось скрытие формы

DoubleAnimation HideBlindWindow = new DoubleAnimation(SystemParameters.PrimaryScreenWidth
- Blind.Width, SystemParameters.PrimaryScreenWidth, TimeSpan.FromMilliseconds(150),
FillBehavior.HoldEnd);
DoubleAnimation HideTimeWindow = new DoubleAnimation(0.9, 0, TimeSpan.FromMilliseconds(140),
FillBehavior.HoldEnd);

blind.BeginAnimation(Window.LeftProperty, HideBlindWindow);
timeWindow.BeginAnimation(Window.OpacityProperty, HideTimeWindow);

// как сделать чтобы эти действия выполнялись после окончания анимации
blind.Hide();
timeWindow.Hide();

    


Ответы

Ответ 1



Используйте Completed event для анимации. Подробнее на MSDN. В вашем случае: anim.Completed += new EventHandler(anim_Completed); private void anim_Completed(object sender, EventArgs e) { //здесь ваш код после завершения анимации }

Ответ 2



Ваша анимация длится 150 миллисекунд? Ну так подождите эти самые 150 миллисекунд перед тем, как выходить: blind.BeginAnimation(Window.LeftProperty, HideBlindWindow); timeWindow.BeginAnimation(Window.OpacityProperty, HideTimeWindow); await Task.Delay(150); blind.Hide(); timeWindow.Hide(); Вам придётся переделать ваш метод в async.

Комментариев нет:

Отправить комментарий