現在、WPFとCaliburn.Microに入っています。現在、MEFやAutofacのようなものはありません。Caliburn.Micro - ビューが表示されたときに何かをする
今、ビューが表示された直後に、ビューモデルでいくつかのコードを実行しようとしています。このコードは、ビューが表示される直前にメッセージボックスを表示し、関連するチュートリアルで
:
protected override void OnActivate()
{
MessageBox.Show("Page Two Activated"); //Don't do this in a real VM.
base.OnActivate();
}
氏アイゼンバーグは、この書き込み
:
は、あなたが任意の活性化ロジックを持っている場合には、覚えておいてください ビューが既に読み込まれていることに依存して、OnActivateとの組み合わせではなくScreen.OnViewLoaded を上書きする必要があります。
これは私が持っているものです:ActionMessage:
protected override void OnViewLoaded(object view)
{
base.OnViewLoaded(view);
MessageBox.Show("OnPageTwoViewLoaded");
}
は、私はまた、グリッドEventTriggerおよびCALを経由して、それを試してみました。 しかし、3つのケースでは、ビューが表示される前にMessageBoxが表示されます。
確かに何か不足していますが、何が間違っていますか?
C.Mは実際に画面上に表示する前にビューインスタンスを作成します。 (つまり、C.Mはこれらを遅延ロードしません)。実際にビューを表示する前にOnViewLoadedコードが実行されます。私はOnActivateがOnViewLoadedではなく正しい場所であるべきだと思います。 この特定の動作をサンドボックスで試しましたか? – EtherDragon
あなたの答えをありがとう。私はあなたがサンドボックスで何を意味するのかわかりませんが、OnActivateにMessageBoxコードを置くと、ビューが表示される前に表示されるようになります。オーバーライドされたOnViewAttachedに入れた場合、OnViewLoadedはすぐに実行され、動作するように見えます。しかし、そこに他のコードを置くと、ビューが表示される前に実行されます。 – user1018465
@therDragonだから、いつCMが実際にVIEWを開始するのですか?それはスタートアップ時にすべてそれらをinstanciateですか? – JobaDiniz