2

MVVMLightをWindowsPhone7で動作させようとしていますが、パラダイムに頭を悩ませるのに小さな問題があります。

従うべきシナリオは次のとおりです。1。)メインビューモデルが読み込まれると、データベースの存在を確認するためにMVVM Light Messengerを介してメッセージが送信されます。2。)メッセージはViewModelによって受信され、存在する場合はデータベースではなく、メッセージがメッセンジャーを介してビューに返送され、インストールビューを表示します(移動するため)3。)インストーラービューは最初のビューで表示されます

問題は、イベントが呼び出される順序にある​​ようです。ビューはデータベースの存在を正常にチェックしてメッセージを送信しますが、ビューモデルはまだ初期化されていないため(メッセージの送信時にコンストラクターのブレークポイントはヒットしません)、フォームは表示されません。これを正しい方法で処理していますか、それともビューにデータベースが存在するかどうかを確認する必要がありますか?

4

1 に答える 1

4

メッセンジャーは、メモリ内に存在するオブジェクトにのみメッセージを送信できます(補足として、「オフラインメッセンジャー」ソリューションの追加を検討していますが、これは実際には単なるビジョンであり、青写真でさえありません)。

MVVM Lightでは、VMがXAMLのビューに接続される方法で、VMは非常に早い段階で稼働します(InitializeComponentがコードビハインドでヒットするとすぐに)。以前にVMを作成する必要がある場合は、ViewModelLocatorで作成できます。MIX11セッション(Deep Dive MVVM)でそれを示すので、公開されたときにビデオを確認します(ブログhttp://blog.galasoft.chで言及します)。

ビューとVMをバインドするMVVMLightの方法を使用しておらず、VMがまだメモリに存在しない場合、1つの方法は、後で使用するためにメッセージを「キャッシュ」することです。メッセージを受信して​​保存するためだけに存在する軽量オブジェクトを作成します。次に、VMが作成されたら、メッセージを取得します。必要に応じて、メッセージキューです。

これがお役に立てば幸いです、ローラン

于 2011-04-07T08:38:33.353 に答える