2011-10-30 247 views
0

我知道已經有幾個這樣的問題,但我似乎無法解決做什麼,我有一個按鈕,我想打開一個新的窗口,有沒有辦法在純xaml中做到這一點?沒有從CodeBehind或ViewModel中調用它,我沒有看到如何打開對話框。我沒有使用任何mvvm工具包。打開按鈕按鈕點擊MVVM

+0

新窗口是彈出窗口還是完全獨立的非模態窗口? – sll

回答

0

你可以像這樣....

您可以使用<x:Code>

<Button Content="OK" Click="Button_Click"/> 
<x:Code> 
    private void Button_Click(object sender,RoutedEventArgs e) 
    { 
    MessageBox.Show("Hello"); 
    } 
</x:Code> 

標準的方式做到這一點是commands

+0

但如果我使用一個命令,那麼我將需要在我的ViewModel中創建它,並且由於我需要顯示一個新窗口,這將打破MVVM:s –

+4

這仍然是有效的代碼 - 它只是將其移入xaml一側。 .. –

+0

我最後的代碼背後,並沒有我所希望的那麼好,但由於我沒有使用MVVM框架,這是最簡單的解決方案。 –

3

我沒有看到如何打開對話框,而無需從我的CodeBehind或ViewModel調用它。

通常,您在代碼中執行此操作 - 但大多數MVVM框架提供了一種抽象方法。

這通常通過某種形式的服務位置(即:在ViewModel中注入「ViewService」或類似物)來處理。另一種選擇是使用某種形式的消息傳遞,這是MVVM Light的方法。

這些方法的優點是可以在不知道視圖的情況下編寫虛擬機 - 您正在改變您編寫代碼的方式,以便命令(在ViewModel中)觸發某個事件,並且正確視圖爲您打開。這使View層依賴於你的VM層。