打开新表单并在mvvm light工具包中隐藏此表单

时间:2013-07-16 13:45:54

标签: wpf mvvm-light

我有一个在启动时运行的LoginWindows。

我有一个enterButton,当点击它时,将一个参数发送到主窗口然后显示它然后隐藏自己。

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

    }

    private object Enter()
    {
     //Show MainWndow
     }

从mvvmLight中的viewmodel打开新窗口的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

这是有用的答案。 https://stackoverflow.com/a/16994523/970404

概念:

  • 使用SimpleIoC注册多个VM GetInstance(...)请求它们。
  • 使用自定义消息类型的Messenger类使用OpenWindowMessage
  • 打开模态/非模态 来自父虚拟机的Windows坚持MVVM原则
  • 传 窗口之间的数据(仅在NonModal中显示)

重要提示:

此示例中用于从模式窗口设置非DP DialogResult的方法不是MVVM友好的因为它使用代码隐藏来设置应该避免的Window.Closing事件上的DialogResult属性(如果需要“可测试“)。我喜欢的方法有点长,在这里有很好的记录(问答的混合)。因此,为什么我为了这个样本而忽略了它。