在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,以允许我独立地显示查找表,例如维护类型和合同类型在同一个用户控件的实例上?我看了一下Viewmodel定位器,但我仍然不确定如何完成这个任务。

谢谢

我不认为这真的是一个ViewModel的东西。这更像是服务的问题。

控件的ViewModel不会改变,但是您将动态地插入所需的服务来维护列表。ie。MaintenanceTypeService和ContractTypesService将实现IListMaintenanceService,它公开了一个项目列表和添加、删除和编辑命令。

最新更新