1

起動時に実行される LoginWindows があります。

enterButton があり、クリックするとパラメータがメインウィンドウに送信され、表示されてから非表示になります。

   public RelayCommand EnterCommand { get; set; }
   ...
    public LoginViewModel()
    {
        EnterCommand = new RelayCommand(() => Enter());

    }

    private object Enter()
    {
     //Show MainWndow
     }

mvvmLight のビューモデルから新しいウィンドウを開く最良の方法は何ですか?

4

1 に答える 1

1

役に立つ回答です。https://stackoverflow.com/a/16994523/970404

コンセプト:

  • 複数の VM を SimpleIoC に登録し、GetInstance(...) を使用してそれらを要求します。
  • カスタム メッセージ タイプ OpenWindowMessage での Messenger クラスの使用
  • MVVM の原則に忠実なまま、親 VM からモーダル/非モーダル Windows を開く
  • ウィンドウ間でのデータの受け渡し (NonModal に示されている)

重要な注意点:

この例でモーダル ウィンドウから非 DP DialogResult を設定するために使用される方法は、MVVM に適していません。コード ビハインドを使用して、避けるべき Window.Closing イベントで DialogResult プロパティを設定します (「テスト可能」である必要がある場合)。 . 私の好みのアプローチは少し長く、非常によく文書化されています HERE (質問と回答の混合)。したがって、このサンプルのためにそれを無視した理由.

于 2013-07-17T04:26:15.843 に答える