UWP/MVVMlight:更换过时的ServiceLocator
问题描述:
我更新我的应用程序,现在我用MVVMLight 5.3.0 的viewmodellocator坠毁在该行UWP/MVVMlight:更换过时的ServiceLocator
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
,我读了IH MVVMLight的最新版本,类servicelocartor被删除,并且Microsoft.Practices.ServiceLocation消失...
那么,我能做什么/必须做的工作使应用程序再次? 感谢
答
从博客文章介绍MVVMLight
// OLD ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
注释掉的代码行上述的标准库版本。每当你使用ServiceLocator.Current使用SimpleIoc.Default代替
例如
// OLD var nav = ServiceLocator.Current.GetInstance<INavigationService>();
// NEW
var nav = SimpleIoc.Default.GetInstance<INavigationService>();
答
我总是用MVVMLight以这样的方式,无需设置定位器提供商ServiceLocator
。通常情况下,您的视图模型定位应该是这样的:
public class ViewModelLocator
{
public ViewModelLocator()
{
SimpleIoc.Default.Register<IDataProvider, SQLiteDataProvider>();
SimpleIoc.Default.Register<IDialogService, DialogService>();
SimpleIoc.Default.Register(GetNavigationService);
SimpleIoc.Default.Register<MainViewModel>();
SimpleIoc.Default.Register<MessageViewModel>();
SimpleIoc.Default.Register<SearchViewModel>();
SimpleIoc.Default.Register<SettingViewModel>();
...
}
public MainViewModel MainViewModel => SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());
public MessageViewModel MessageViewModel => SimpleIoc.Default.GetInstance<MessageViewModel>(Guid.NewGuid().ToString());
public SearchViewModel SearchViewModel => SimpleIoc.Default.GetInstance<SearchViewModel>(Guid.NewGuid().ToString());
public SettingViewModel SettingViewModel => SimpleIoc.Default.GetInstance<SettingViewModel>(Guid.NewGuid().ToString());
...
public INavigationService GetNavigationService()
{
var navigationService = new NavigationService();
navigationService.Configure(Pages.MainView.ToString(), typeof(MainPage));
navigationService.Configure(Pages.MessageView.ToString(), typeof(MessagePage));
navigationService.Configure(Pages.SearchView.ToString(), typeof(SearchPage));
navigationService.Configure(Pages.SettingView.ToString(), typeof(SettingPage));
...
return navigationService;
}
}
不幸的是,这是行不通的 – Refre
张贴是有问题 –
我不得不重新打开另一个页面,因为我的评论已被删除HTTPS代码://计算器的.com /问题/ 47520508/UWP-mvvmlight-替换过时-的ServiceLocator和 - simpleioc寄存器 – Refre