Ожидайте анимации, рендеринга для завершения - XAML и C#

У меня есть ситуация, где я анимирую часть своего приложения XAML, и я должен ожидать анимации И представляющий для завершения, прежде чем я смогу идти дальше в своем коде. До сих пор заключительная часть моей функции похожа:

    ProcExpandCollapse.Begin();
    while (ProcExpandCollapse.GetCurrentState() != ClockState.Stopped) { }
}

Который, в теории, будет ожидать, пока анимация не закончена. Но это не будет ожидать, пока рендеринг не закончен - поток, рисующий приложение, все еще, возможно, не перерисовал анимацию.

Анимация разворачивает UIElement и затем следующую часть моего использования кода, это представило размер, чтобы сделать некоторые вещи. Мой вопрос затем, как я ожидаю, пока мой Элемент UI не повторно представляется перед хождением дальше?

6
задан Adam S 7 June 2010 в 14:31
поделиться

2 ответа

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

mycontrol.Dispatcher.BeginInvoke((Action)delegate{textbox1.Text = "Grazie";});
mycontrol.Dispatcher.Invoke((Action)delegate{GetScreenshot();}, DispatcherPriority.Background);

Затем код будет продолжен после вызова и завершения GetScreenshot, что произойдет после завершения рендеринга (поскольку рендеринг имеет более высокий приоритет, чем фон).

7
ответ дан 17 December 2019 в 00:03
поделиться

У объекта раскадровки есть событие «Завершено», на которое вы можете подписаться. Он будет вызван, когда анимация будет завершена. Это то, что вы ищете?

В основном я думаю, что вам нужен "ProcExpandCollapse.Completed + =" (затем нажмите вкладку и выберите время просмотра, VS сгенерирует для вас фрагмент)

0
ответ дан 17 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: