Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVVM中打开窗口_C#_Wpf_Mvvm - Fatal编程技术网

C# 在MVVM中打开窗口

C# 在MVVM中打开窗口,c#,wpf,mvvm,C#,Wpf,Mvvm,我被告知打开/显示窗口应该使用窗口服务来完成,否则会被视为违反MVVM 我搜索后发现了这个 class WindowService : IWindowService { public void ShowWindow(object viewModel) { var win = new Window(); win.Content = viewModel; win.Show();

我被告知打开/显示窗口应该使用窗口服务来完成,否则会被视为违反MVVM

我搜索后发现了这个

    class WindowService : IWindowService
    {
        public void ShowWindow(object viewModel)
        {
            var win = new Window();
            win.Content = viewModel;
            win.Show();
        }
    }
但是iWindows服务有以下错误:

无法在此处访问内部接口“IWindowService”


因此,假设这是打开新窗口的正确方法,如何继续?如果不是,那么最好的替代方案是什么?

您需要定义
WindowsService
类在某处实现的接口:

public interface IWindowService
{
    void ShowWindow(object viewModel);
}

您需要定义窗口打开界面。您的代码正在尝试删除WPF内部的。使用ShowWindow方法创建一个名为ImuhWinderOpener的接口并实现它。此外,应该将VM分配给DataContext。而且,
newwindow()
是没有意义的。此外,您不应该只是复制粘贴代码并运行它。理解它意味着什么,并将这种理解应用到你的应用程序中。无论你想从服务中打开一个窗口的原因是什么,你肯定可以用其他方式解决它。毕竟,服务拥有用户界面是毫无意义的。