2011-09-27 10 views
0

MVVM-Patternに関する質問があります。だから、私はそれを完全に理解していたとは分かりません。MVVMLightでViewModelのDataContextを設定する

私のシナリオ:

  • ViewModelLocator:指定されたビューへの要求のViewModelを提供します。
  • LoginViewModel:MainPageViewためのViewModel

私の例のアプリ:LoginView

  • MainPageViewModelためのViewModel。シンプルです:ユーザーはログインしてMainPageViewに来ることができます。

    MainPageViewはMainPageViewModelを使用します。 MVVMLightフレームワークのメッセンジャーを使用して、LoginViewからMainPageViewにナビゲートします。

    Messenger.Default.Register<LoginPerson>(this, Constants.NavigateLogin, 
           person => this.Window.SetContentControl(new MainPage(person))); 
    

    私はログインした人物をビューに渡します。 MainPage - Viewは、ログインした人物をViewModel(=> MainPageViewModel)に設定します。

    この方法は正しいですか?私はそうは思わない:-)どのようにViewModels間で通信できますか?あなたのアドバイスをありがとう。

    よろしく、プロ

  • 答えて

    2

    MVVMを使用する場合、アプリケーションはあなたのviewmodelsではなく、あなたのビュー。ナビゲーションなどのビジネスロジックを処理したり、ビューからUserオブジェクトを渡したりしないでください。ビューは、ユーザーがViewModelと簡単にやり取りできるようにするための単純なレイヤーです。

    通常、この種の状況では、私はShellViewModelを使用します。CurrentPageのプロパティは、現在のViewModelに設定されています。 にもCurrentUserというプロパティを格納します。

    ShellViewModelは起動オブジェクトで、起動時にCurrentPageLoginViewModelになります。ユーザーがログインに成功すると、LoginViewModelCurrentUserのパラメータを持つLoginSuccessfulメッセージ、およびメッセージおよびメッセージパラメータに基づいてCurrentUserを設定し、ために新しいMainPageViewModel

    CurrentViewを切り替えるでしょうShellViewModelでしょうピックアップを放送します例、私のポストをチェックしてくださいhere

    +0

    こんにちはレイチェル、あなたの答えと良いブログのポストのためにありがとう!よろしく – bitsmuggler

    関連する問題