Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 如何使用Autofac解决视图模型的类型问题?_C#_Wpf_Mvvm_Types_Datacontext - Fatal编程技术网

C# 如何使用Autofac解决视图模型的类型问题?

C# 如何使用Autofac解决视图模型的类型问题?,c#,wpf,mvvm,types,datacontext,C#,Wpf,Mvvm,Types,Datacontext,在使用Autofac容器并注册了VM的应用程序中,我需要在我只查看模型类型的情况下分配DataContext MainViewModel调用导航服务: 等待NavigationService.NavigateToAsync 在我的服务课上,如何从这做起这很好: 这不起作用: 这给了我一个错误: “viewModelType”是一个变量,但与类型一样使用 将类型作为参数传递给ResolveType serviceType 不要尝试将其用作泛型参数将类型作为参数window.DataContext=

在使用Autofac容器并注册了VM的应用程序中,我需要在我只查看模型类型的情况下分配DataContext

MainViewModel调用导航服务:

等待NavigationService.NavigateToAsync

在我的服务课上,如何从这做起这很好:

这不起作用:

这给了我一个错误:

“viewModelType”是一个变量,但与类型一样使用


将类型作为参数传递给ResolveType serviceType


不要尝试将其用作泛型参数

将类型作为参数window.DataContext=container.ResolveviewModelType传递;好的,我花了5个小时来处理这个问题。这很简单。非常感谢。
private async Task InternalNavigateToAsync(Type viewModelType, object parameter)
        {
            var bootStrapper = new BootStrapper();
            var container = bootStrapper.BootStrap();

            Window window = CreateWindow(viewModelType, parameter);
            //this works fine
            if (viewModelType.Name == "MainViewModel")
            {
                window.DataContext = container.Resolve<MainViewModel>();
            }
            if (viewModelType.Name == "UpdateViewModel")
            {
                window.DataContext = container.Resolve<UpdateViewModel>();
            }
            window.Show();
        }
private async Task InternalNavigateToAsync(Type viewModelType, object parameter)
        {
            var bootStrapper = new BootStrapper();
            var container = bootStrapper.BootStrap();

            Window window = CreateWindow(viewModelType, parameter);
            //but how to do this?
            window.DataContext = container.Resolve<viewModelType>();

            window.Show();
        }
window.DataContext = container.Resolve(viewModelType);