私は WPF を使用してアプリを構築していますが、それらの間に遅延を持たせたい 2 つのアニメーションがあります。しかし、私がそれをしようとすると
MainWindow_Loaded(object sender, RoutedEventArgs e)
イベント、ロード中に遅延するだけで、最初のアニメーションが見逃されます。
助けはありますか?
私は WPF を使用してアプリを構築していますが、それらの間に遅延を持たせたい 2 つのアニメーションがあります。しかし、私がそれをしようとすると
MainWindow_Loaded(object sender, RoutedEventArgs e)
イベント、ロード中に遅延するだけで、最初のアニメーションが見逃されます。
助けはありますか?
Dispatcher オブジェクトを使用してアニメーションでコードを呼び出すことは、試してみる価値があるかもしれません。ディスパッチャの優先度を設定することで、たとえばすべてのデータ バインディング (非同期であっても) が完了するまで実行を延期できます。
// Schedule the update function in the UI thread.
Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Loaded, ...);
これが機能しない場合は、優先度を変更してみてください。優先度が低いほど、後でアクションが呼び出されます。
Window.ContentRendered(またはMe.ContentRendered)を使用して、ウィンドウの読み込みがいつ終了したかを確認することに成功しました。
残念ながら、読み込み (バインディング レンダリング) が完了したことを通知する組み込みの通知はありません。したがって、独自の解決策を考え出す必要があります。
MainWindow_Loaded
次のようなものを書くことができます(疑似コード):
new Thread(new ThreadStart(new Action(() =>
{
Sleep(2000); // a couple of seconds sleep
StartAnimation();
}))).Start();
お役に立てれば。