2011-10-04 37 views
1

我們能有一個視圖模型爲App.xaml中,使我們可以做一些啓動邏輯推理,並形成應用程序的起點......視圖模型的App.xaml中

+1

但App.xaml中是不是真的在這個詞的意義上的「視圖」,難道是...... – BoltClock

回答

0

不,我們不能有個視圖模型在應用程序級別。正如@BoltClock所建議的那樣,它並不是我們綁定了任何類的實例的數據上下文。 MVVM不適用於App

+0

那麼我將如何打開基於關於命令一個「說法」提供的參數 – Ankesh

+0

視圖實際上是2 Windows即應用程序可以在2種模式下打開 – Ankesh

+0

應用程序類有一個靜態的Main()方法不是嗎?這將接受您的命令行參數,並基於它創建一個窗口並使用'GetContentStream()'調用啓動其內容。 –

2

不,App.xaml不是Window類,它是您的Application類。

您仍然可以覆蓋它的OnStartup()方法來處理您自己的自定義邏輯並啓動特定的Views/ViewModels。

例如,

protected override void OnStartup(StartupEventArgs e) 
{ 
    base.OnStartup(e); 

    var login = new LoginDialog(); 
    var loginVm = new LoginViewModel(); 

    login.DataContext = loginVm; 
    login.ShowDialog(); 

    if (!login.DialogResult.GetValueOrDefault()) 
    { 
     Environment.Exit(0); 
    } 

    // Providing we have a successful login, startup application 
    var app = new ShellView(); 
    var context = new ShellViewModel(loginVm.CurrentUser); 
    app.DataContext = context; 
    app.Show(); 
} 
+0

我得到了你的觀點,那麼我將如何處理這種情況[切換意見](http://stackoverflow.com/questions/7656743/toggle-two-views-windows-in-mvvm-wpf) – Ankesh

+1

'ShellViewModel'將處理無論什麼觀點都是「當前」,就像你的問題的最佳答案所說的那樣。以下是切換視圖的另一個示例:http://rachel53461.wordpress.com/2011/05/28/switching-between-viewsusercontrols-using-mvvm/ – Rachel