2017-04-19 124 views
0

假設我們有一個用於應用程序的主窗口,並且我們需要第二個窗口或用戶控件(,以最適合的方式)作爲設置窗口。我們如何打開這個窗口並用mvvmLight方法關閉它?如何在WPF MVVM Light中打開和關閉Window&UserControle?

這是目前我使用的代碼開幕一個新的窗口。

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

這是目前我使用閉合一個窗口中的代碼。

This.Close(); 

我不太瞭解userControle控件以及何時使用它。如果您知道YouTube視頻或我可以閱讀的網站,它將會受到嚴厲的約束。或者只是簡單地解釋一下。

下面是我如何構建MenuItem Click Events。對於這個時代來說,這就是我喜歡爲我的事件處理者敲擊一般按鈕的方式,並將它們放置在一個清晰的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); 
    } 
+0

你現在正在做什麼違反了很多MVVM的原則。當我訪問計算機時,我會添加一個解釋性答案。 –

回答

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?

有很多關於這個問題的鏈接。請參考我在這裏提供的和谷歌或Bing,如果你想要更多:)