如果我想打开一个新窗口,而不需要任何即时信息,这样打开可以吗?我知道使用对话框我应该使用一个服务,但是如果我不需要返回任何信息,只是为了打开一个窗口而在服务中添加一个新功能是相当麻烦和困惑的?
// in ShellViewModel
public ICommand AboutCommand
{
get
{
if (_aboutCommand == null) {
_aboutCommand = new RelayCommand(delegate
{
var aboutView = new QuickImageUpload.Views.AboutView();
aboutView.Show();
});
}
return _aboutCommand;
}
}
最佳答案
你“可以”做到这一点,但你将违背 MVVM 模式的目的。 View 模型的目的是支持单元测试(非 STA 线程执行),因此当您开始显示 UI 窗口时,您的单元测试将不起作用。
因此,纠正您对使用对话框服务中介器的理解并不是说它需要某种返回响应,而是仍然允许 View 模型在非 STA 线程中执行,因此单元测试人员很高兴。
希望这能为您解决问题。
关于c# - 可以在 ViewModel 中打开新窗口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964781/