在MVVM,MEF实现中动态更改View的ViewModel

时间:2011-11-01 17:13:03

标签: silverlight-4.0 mvvm mef

我想在整个Silverlight MEF MVVM解决方案中使用一个usercontrol。 我希望能够将其与多个ViewModel中的一个链接起来,具体取决于我所在的模块。此控件的作用是列出给定实体的记录,以便我可以添加,编辑或删除。我意识到我会在多个位置使用这个控件 - 更新几个查找表,所以我决定使它的ViewModel动态化。如下所示,我正在使用Galasoft MVVM插件。

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

我的问题是如何从ViewModelMT动态更改为ViewModelCT以允许我独立显示查找表,例如同一用户控件的实例上的维护类型和合同类型?我看了一下Viewmodel定位器,但我仍然不确定如何完成这项工作。

谢谢

1 个答案:

答案 0 :(得分:0)

我认为这不是ViewModel的事情。这更像是服务问题。

您的控件的ViewModel不会更改,但您将动态插入所需的服务以维护您的列表。即。 MaintenanceTypeService和ContractTypesService将实现IListMaintenanceService,它公开项目列表以及添加,删除和编辑命令。