Динамическое изменение ViewModel представления в MVVM, реализация MEF - PullRequest
1 голос
/ 01 ноября 2011

У меня есть пользовательский контроль, который я хочу использовать в своем решении Silverlight MEF MVVM.Я хочу иметь возможность связать его с одним из нескольких ViewModels в зависимости от того, в каком модуле я нахожусь. Этот элемент управления выводит список записей данного объекта, чтобы я мог добавлять, редактировать или удалять.Я понял, что буду использовать этот элемент управления в нескольких местах - чтобы обновить несколько таблиц поиска, поэтому я решил сделать его ViewModel динамическим.Как видно ниже, я использую плагин Galasoft MVVM.

if (!GalaSoft.MvvmLight.ViewModelBase.IsInDesignModeStatic)
            {
                // set DataContext
                DataContext = PluginCatalogService.Instance.FindSharedPlugin(ViewModelTypes.ViewModelMT, PluginType.ViewModel);
                _viewModel = (ViewModelMT)DataContext;
            }     

Мой вопрос заключается в том, как я могу динамически перейти от ViewModelMT к ViewModelCT, чтобы позволить мне независимо отображать справочные таблицы, например, Типы обслуживания и Типы контрактов в экземпляреэтого же usercontrol?Я взглянул на локатор Viewmodel, но я все еще не уверен, как это сделать.

Спасибо

1 Ответ

0 голосов
/ 08 ноября 2011

Я не думаю, что это действительно вещь ViewModel. Это скорее проблема сервиса.

Ваша ViewModel для элемента управления не изменится, но вы динамически добавите нужную услугу для поддержки вашего списка. то есть. MaintenanceTypeService и ContractTypesService будут реализовывать IListMaintenanceService, который предоставляет список элементов и команды добавления, удаления и редактирования.

...