因此,我有一个可编辑的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