因此,我有一個可編輯的ViewModel,我不想通過對話框窗口進行編輯。WPF:如何關閉按鈕單擊對話框
通常情況下,ViewModels視圖只顯示數據,但您可以通過調用window.showDialog()按下Edit按鈕打開一個新的Xaml窗口。該窗口接受viewModel作爲DataContext,將其屬性顯示爲可編輯,並將Save和Cancel命令綁定到按鈕。
這一切正常,但我有這個問題。
首先保存命令起作用,但不關閉對話框。其次,它會破壞MVVM,因爲VM必須知道EditDialog視圖來創建它。
當我點擊X關閉按鈕時會發生什麼。我知道一個對話框通常會返回false作爲DialogResult,但在這裏我不處理結果。
有沒有人做過類似的事情,但優雅地使用MVVM?
編輯
我也注意到,如果我用.ShowDialog即使我公開爲文本框,我不能編輯任何內容。這是因爲模態對話框應該如何工作?
好吧,我沒有完全得到解決方案1。那麼你在哪裏打開對話框?另外我不確定我是否願意添加一個完整的IWindowManager,當我除了應用程序窗口之外只打開1個Modal。感謝您的輸入。 – 2011-02-26 13:18:25
@Ingó,儘管我們也只有一個模式窗口,但我有'IWindowManager'。具有此服務的原因是將ViewModel從完全與View相關的代碼(對話框窗口)中分離出來。在第一種情況下,我會使用來自外部ViewModel的'IWindowManager'打開對話框。假設它是一些具有'EditCommand'的viewModel。這個命令應該創建'EditorViewModel'並在對話框中打開它。 – Snowbear 2011-02-26 14:01:28
我正在考慮這一點,但這意味着必須在ViewModel中添加另一項服務。它是否與服務臃腫沒有問題?如果我可以讓容器處理它,這將是沒有問題的,但模型是我添加的東西之一,所以我不能做一個容器解決。 – 2011-02-26 14:06:30