c# - 可以在 ViewModel 中打开新窗口吗?

标签 c# wpf mvvm

如果我想打开一个新窗口,而不需要任何即时信息,这样打开可以吗?我知道使用对话框我应该使用一个服务,但是如果我不需要返回任何信息,只是为了打开一个窗口而在服务中添加一个新功能是相当麻烦和困惑的?

// 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/

相关文章:

c# - 等待异步 WCF 方法

WPF RichTextBox自动合并两个相邻的Runs

c# - WPF 子菜单项面板

c# - 在 ICommand 操作期间更新标签

c# - 使用MVVM Light和PCL创建UWP应用程序

c# - MVVM:实现 ViewModel 的类不更新其模型实例

c# - 到根 URL 的 WebAPI 路由

c# - Asp.Net 网页部件

c# - Unity 编辑器中的印地语字母

c# - WPF TreeView 双击后恢复焦点