2013-07-16 45 views
1

我有一個LoginWindows,它在啓動時運行。打開新窗體並在mvvm light工具包中隱藏此窗體

我有一個enterButton,點擊它時,發送參數到mainwindows並顯示它,然後隱藏自己。

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

    } 

    private object Enter() 
    { 
    //Show MainWndow 
    } 

在mvvmLight中從視圖模型打開一個新窗口的最佳方式是什麼?

回答

1

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

概念:

  • 註冊多個虛擬機與SimpleIoC和使用 的GetInstance(...),要求他們出去。
  • 信使類,使用一個自定義消息類型OpenWindowMessage
  • 開幕莫代爾/非模態 的Windows從母VM堅守到MVVM原則
  • 窗口(只是NONMODAL所示)
之間傳遞 數據

重要提示:

在本例中使用從模態窗口中設置的非DP DialogResult的方法,沒有MVVM友好因爲它使用代碼隱藏在Window.Closing事件上設置DialogResult屬性,應該避免這種情況(如果需要「可測試」)。我的首選方法有點長,並且在這裏有很好的記錄(問題和答案的混合)。因此,爲什麼我忽略它爲了這個樣本。

+0

你可以發佈隱藏主窗口的代碼嗎? – User1551892

+1

在代碼後面,當註冊信使....'this.Hide();' –