【发布时间】:2019-06-22 15:26:43
【问题描述】:
在使用 Autofac 容器并注册了 VM 的应用程序中,我需要在我刚刚查看模型类型的情况下分配 DataContext。
MainViewModel 调用 NavigationService:
await NavigationService.NavigateToAsync<UpdateViewModel>();
在我的服务类中,如何做到这一点(这很好):
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();
}
它给了我一个错误:
'viewModelType' 是一个变量,但用作类型
【问题讨论】:
-
将类型作为参数传递
window.DataContext = container.Resolve(viewModelType);
标签: c# wpf mvvm types datacontext