【发布时间】:2015-11-03 14:23:14
【问题描述】:
使用 MVVMLight ViewModelLocator 时,如何在我的应用程序中注册和取消注册多个 ViewModel?
问题是我希望能够告诉应用哪个 ViewModel 应该注册,哪个未注册。我的应用中有 14 个 ViewModel(其中很少有像 SessionViewModel 那样在后台工作,它决定所有视图的当前会话状态)
编辑
我的 ViewModelLocator 的一部分:
public New()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<AdministratorViewModel>();
SimpleIoc.Default.Register<CallViewModel>();
SimpleIoc.Default.Register<EmployeeViewModel>();
SimpleIoc.Default.Register<LoginViewModel>();
SimpleIoc.Default.Register<MessengerViewModel>();
SimpleIoc.Default.Register<QualityViewModel>();
}
为了能够从我使用过的 XAML 视图中访问 ViewModel:
DataContext="{Binding Source={StaticResource Locator}}"
LoginViewModel 应该可用于所有视图。例如:Employee View 将只使用CallViewModel、EmployeeViewModel 和MessengerViewModel,所以我不需要Employee View AdministratorViewModel 和QualityViewModel。那么,如何才能只为员工视图注册所需的 ViewModel?
【问题讨论】:
-
注销是什么意思。您是要清除 Messenger 实例还是调用 iDispose / iCleanup。请说明您要完成的任务。 viewmodel 定位器有助于注册 VM 并协助进行依赖注入。
-
@JKing 谢谢。请检查我编辑的帖子。
标签: c# wpf mvvm mvvm-light