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>(); 

http://www.mvvmlight.net/std10

+0

不幸的是,这是行不通的 – Refre

+0

张贴是有问题 –

+0

我不得不重新打开另一个页面,因为我的评论已被删除HTTPS代码://计算器的.com /问题/ 47520508/UWP-mvvmlight-替换过时-的ServiceLocator和 - simpleioc寄存器 – Refre

我总是用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; 
    } 
}