Событие завершено анимацией, созданное до его полной визуализации - PullRequest
0 голосов
/ 03 ноября 2011

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

У меня есть простая анимация с отображением панели загрузки на довольно тяжелой сетке, я думаю, что это займет некоторое время, чтобы сделать панель визуализированной с эффектом затухания, неудачно завершенное событие вызывается до отображения анимации и продолжения работы кода и запустить процесс обработки данных, который на несколько секунд бездействует (правильно) в приложении. Это должно начаться после того, как панель будет эффективно отображена на экране!

Ответы [ 2 ]

0 голосов
/ 01 августа 2017

Вы можете вызвать пустое низкое приоратное действие:

Dispatcher.CurrentDispatcher.Invoke(() => { }, DispatcherPriority.Background);

Блокирует выполнение кода до тех пор, пока не будут обработаны все действия с приоритетом выше DispatcherPriority.Background. Таким образом, вы можете убедиться, что ваш код анимации был обработан до того, как какой-либо другой код блокировки будет выполнен с более высоким приоритетом (а логика анимации останется в очереди диспетчера).

0 голосов
/ 03 ноября 2011

Эта анимация сделана с LayoutTransform или RenderTransform?

Если LayoutTransform, то я думаю, что в анимации завершено событие события LayoutUpdated соответствующего визуала. Так что, вероятно, когда визуал на самом деле впервые реагирует на этап макета после анимации, это будет правильным местом для вашего кода для запуска этого нового процесса. После запуска процесса отсоедините событие layoutupdated для того же визуала.

К сожалению, для RenderTransform такого события нет, кроме CompositionTarget.Rendering. Вы можете попробовать обработать это событие явно в анимации завершено событие. Также, когда событие рендеринга обрабатывается после завершения анимации, запустите процесс и отсоедините событие рендеринга. Это событие может замедлить работу вашего приложения, если оно не отсоединено.

Дайте мне знать, если вам понадобится дополнительная помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...