2011-11-01 70 views
1

我有一个用户控件,我想在整个Silverlight MEF MVVM解决方案中使用它。 我希望能够根据我所处的模块将它与多个ViewModel之一进行链接。该控件所做的是列出给定实体的记录,以便我可以添加,编辑或删除。我意识到我将在多个位置使用此控件 - 更新多个查找表,所以我决定使其成为ViewModel动态。如下所示,我使用Galasoft MVVM插件。动态更改MVVM中的视图的ViewModel,MEF实现

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

我的问题是如何能够我动态地从ViewModelMT改变ViewModelCT让我独立地显示查找表例如维护类型和合同类型在这个相同的用户控件的实例?我查看了Viewmodel定位器,但我仍然不确定如何完成此操作。

谢谢

回答

0

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

您的ViewModel控件不会改变,但您会动态地插入所需的服务来维护您的列表。即。 MaintenanceTypeService和ContractTypesService将实现IListMaintenanceService,它公开项目列表和Add,Delete和Edit命令。