#silverlight-4.0 #mvvm #mef
#silverlight-4.0 #mvvm #mef
Вопрос:
У меня есть пользовательский элемент управления, который я хочу использовать во всем моем решении 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:
Я не думаю, что это действительно ViewModel. Это скорее проблема обслуживания.
Ваша ViewModel для элемента управления не изменится, но вы будете динамически подключать необходимую службу для поддержания вашего list. ie. MaintenanceTypeService и ContractTypesService реализуют IListMaintenanceService, который предоставляет список элементов и команды добавления, удаления и редактирования.