Как разрешить модель представления с помощью Autofac, имеющего только тип модели представления? - PullRequest
1 голос
/ 22 июня 2019

В приложении с контейнером Autofac и зарегистрированной виртуальной машиной мне нужно назначить 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' является переменной, но используется как тип

1 Ответ

1 голос
/ 22 июня 2019

Передайте тип в качестве аргумента Resolve(Type serviceType)

window.DataContext = container.Resolve(viewModelType);

вместо того, чтобы использовать его в качестве универсального аргумента

...