2014-11-06 118 views
0

我試圖在MainWindow顯示後顯示模態登錄對話框。 (如在SSMS)顯示模態登錄對話框

我知道這是不是MVVM的做法,但我使用MainWindowLoaded事件,我調用下面的代碼:

private void MainWindow_OnLoaded(object sender, RoutedEventArgs e) 
{ 
    ViewModel.ShowLoginDialog(); 
} 

在視圖模型我打電話:

public void ShowLoginDialog() 
{ 
    var vm = new LoginControlViewModel(); 
    var window = new LoginWindow(vm); 
    window.ShowDialog(); 
} 

那麼會顯示登錄對話框,但MainWindow只有在對話框關閉時纔會顯示。

如何同時顯示MainWindow和LoginDialog?

+1

在顯示窗口之前發生'加載的'事件*。您可以使用示例[this](http://stackoverflow.com/a/14605461/1997232)回答解決方案,在*窗口呈現後僅顯示某些內容*。 – Sinatr 2014-11-06 09:39:44

回答

1

你在構造函數中調用對話框。如果你使用MVVM,我建議你使用IDialogService。您可以在許多MVVM框架/庫中找到它或輕鬆編寫自己的代碼。你的問題也是通過這種方式解決的。

+0

你有一個自定義DialogService的例子嗎?我找到了http://uxprogramming.blogspot.de/2013/06/simple-mvvm-dialogservice.html,但它拋出了一個'InvalidOperationException',因爲所有者窗口還沒有顯示出來。 – 2014-11-06 08:05:12