Как узнать, загрузилось ли окно? - PullRequest
3 голосов
/ 10 февраля 2012

Я создаю приложение, используя WPF, и у меня есть 2 анимации, между которыми я хочу задержку но когда я пытаюсь это сделать в

MainWindow_Loaded(object sender, RoutedEventArgs e)

событие, он просто задерживается при загрузке, и я пропускаю первую анимацию.

любая помощь?

Ответы [ 3 ]

2 голосов
/ 10 февраля 2012

Возможно, стоит попробовать вызвать код с анимацией, используя объект Dispatcher.Установив приоритет диспетчера, вы можете отложить выполнение, например, до тех пор, пока все привязки данных (даже асинхронные) не будут завершены.

   // Schedule the update function in the UI thread.
   Dispatcher.BeginInvoke(
      System.Windows.Threading.DispatcherPriority.Loaded, ...);

, если это не сработает, попробуйте изменить приоритет - чем ниже приоритет, тем позже ваше действиебудет вызван.

0 голосов
/ 03 августа 2012

Я нашел успех с Window.ContentRendered (или Me.ContentRendered), чтобы узнать, когда окно закончило загрузку.

См. Этот ответ

0 голосов
/ 10 февраля 2012

К сожалению, нет встроенного уведомления о том, что загрузка (рендеринг привязки) завершена.Поэтому следует придумать собственное решение.

Можно было бы в MainWindow_Loaded написать что-то вроде этого ( псевдокод ):

new Thread(new ThreadStart(new Action(() =>
{
      Sleep(2000); // a couple of seconds sleep 
      StartAnimation(); 

}))).Start();

Надеюсь, это поможет.

...