1

ビューが表示された直後に、いくつかのコードを実行する必要があります (メッセージ ボックスを表示するとしましょう)。をオーバーライドしようとしましたがOnInitialize、常に同じですOnViewLoadedOnViewAttachedビューはまだ完全には表示されていません。

ビューを表示するときにアニメーションを使用しますが、同時にグリッドにデータをロードする必要があります。にデータをロードするOnInitializeと、データのロードと同時にアニメーションが発生するため、アニメーションがスムーズになりませんOnViewLoadedOnViewAttached

何かご意見は?

4

1 に答える 1

0

次のようなことを試してみてください。グリッドをバインドする前に、アニメーションが完了するのを待つためにコルーチンを使用します。

private IEnumerator<IResult> ViewModelStartup()
{
    yield return new WaitForAnimation("AnimationName");
    BindData();
}

(注 - データを非同期にロードできますが、割り当てないでください)

次に、フォームが読み込まれると:

private void OnViewAttached()
{
    Coroutine.BeginExecute(ViewModelStartup(), new ActionExecutionContext() { View = this.GetView() });
}

(上記のコードは100%ではないかもしれません...必要に応じてキャストするか、ラッパークラスを作成する必要Viewがあると思います)FrameworkElementActionExecutionContext

コルーチンの実装はWaitForAnimation、名前付きアニメーションのビューを検索し、それが完了するのを待ってからコールバックを起動します。アニメーションが見つからない場合は、おそらくコールバックを起動する必要があります。コルーチンは複数のビューで使用できます。

(コルーチンは実装する必要IResultがあり、情報については CM codeplex サイトのドキュメントを参照してください)

http://caliburnmicro.codeplex.com/wikipage?title=IResult%20and%20Coroutines&referringTitle=Documentation

于 2013-04-27T11:49:40.667 に答える