如何打开&关闭一个窗口& WPF MVVM Light中的UserControle?

时间:2017-04-19 10:23:11

标签: c# wpf windows user-controls mvvm-light

假设我们有一个mainWindow用于应用程序,我们想要第二个窗口或usercontrole(最适合)作为设置窗口。我们如何打开此窗口并使用mvvmLight方法关闭它?

这是我用于打开新窗口的代码。

var settingWindow = new SettingsViewWindow();
    settingWindow.Show();

这是我用于关闭窗口的代码。

This.Close();

我不太了解userControle controle以及何时使用它。如果你知道一个youtube视频或一个我可以阅读它的网站,那就会被认可。或者只是简单地删除一个解释。

  

以下是我如何构建MenuItem点击事件。在这个时候,这就是我喜欢用按钮敲打我的事件处理器的方法,并把它们放在一个令人沮丧的regrion中。   如果我知道如何将这个底部放在一个spolier中。 ;)

private void btnNav_Click(object sender, RoutedEventArgs
  {
    if(sender == btnNavSettings)
      {
          OpenSettingsWindow();
      }
      else if(sender == btnNavExitApp)
      {
          ShutDownApplication();
      }
   }

/// <summary>
/// Opens a settings window.
/// Only on settings window can be open at time.
/// </summary>
private void OpenSettingsWindow()
  {
    if(GlobalVariabels.GUI_Variabels.SettingsWindowIsOpen != true)
      {
         var settingWindow = new SettingsViewWindow();
         settingWindow.Show();
      }
  }

/// <summary>
/// Exit the application properly.
/// </summary>
private void ShutDownApplication()
  {
     Application.Current.Shutdown(0);
  }

1 个答案:

答案 0 :(得分:0)

您可以使用Messenger类在两个组件之间传递消息,例如视图模型和视图:

MVVM Light WPF open new window How to open a new window using MVVM Light Toolkit

或者您可以创建一个处理窗口打开的对话框服务:

Best Pratice to open a New Window in MVVM Light with Parameters

然后使用这样的对话服务注入视图模型:

Separate project for view models to "enforce" MVVM: How do I open dialogs?

这个主题有很多链接。如果您需要更多信息,请参阅我在此提供的内容以及Google或Bing:)