我想在整个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定位器,但我仍然不确定如何完成这项工作。
谢谢
答案 0 :(得分:0)
我认为这不是ViewModel的事情。这更像是服务问题。
您的控件的ViewModel不会更改,但您将动态插入所需的服务以维护您的列表。即。 MaintenanceTypeService和ContractTypesService将实现IListMaintenanceService,它公开项目列表以及添加,删除和编辑命令。