2012-02-10 13 views
3

私はWPFを使用してアプリケーションを構築していますが、私は2つのアニメーションを持っています。 私はウィンドウの読み込みが終了したかどうかを確認する方法?

MainWindow_Loaded(object sender, RoutedEventArgs e) 

イベントのものにしようとすると、 それだけで遅延読み込みながら、私は第一アニメーションを欠場。

助けてくださいか?

+1

エリック、あなたはアニメーションが[開始時間](http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.begintime.aspxを持っていることを見てきました)プロパティ?アニメーションの開始の遅れに役立つかもしれません。 – Clemens

+0

いいえ、私はいません。ありがとう! –

+0

[この回答](http://stackoverflow.com/a/8886941/187955)を見てください。 –

答えて

0

ロード(バインディングレンダリング)が完了したことを知らせるビルトイン通知はありません。だからあなた自身の解決策を考え出すべきです。

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

}))).Start(); 

・ホープ、このことができます:

一つは、このようなMainWindow_Loaded書き込み何か(擬似コード)である可能性があります。

+0

コードはうまくいきませんが、スレッドについてのことはよく分かりませんが、確かに質問に答えてくれてありがとうございます。 –

2

Dispatcherオブジェクトを使用してアニメーションでコードを呼び出すことをお勧めします。ディスパッチャ優先度を設定することにより、たとえばすべてのデータバインディング(非同期でも)が完了するまで、実行を延期できます。

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

これが機能しない場合、優先度を変更しようとします。優先度を下げると、後でアクションが呼び出されます。

0

Window.ContentRendered(またはMe.ContentRendered)を使用して、ウィンドウの読み込みが完了したことを確認して成功しました。

See this answer

関連する問題