using CommonServiceLocator; using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Ioc; using StandardDesign.DataAccess; using StandardDesign.IDataAccess; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StandardDesign.ViewModels { public class ViewModelLocator { public ViewModelLocator() { //管理对象的生命周期 ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); //注册ioc容器 SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); } // 这种属性定义方式会有歧义,感觉好像定义的字段 public LoginViewModel LoginViewModel => ServiceLocator.Current.GetInstance(); public MainViewModel MainViewModel => ServiceLocator.Current.GetInstance(); /// /// 通过ViewModelLocator对象实例 进行对应的VM对象的销毁 /// /// public static void Cleanup() where T : ViewModelBase { if (SimpleIoc.Default.IsRegistered() && SimpleIoc.Default.ContainsCreated()) { var instances = SimpleIoc.Default.GetAllCreatedInstances(); foreach (var instance in instances) { instance.Cleanup(); } SimpleIoc.Default.Unregister(); SimpleIoc.Default.Register(); } } } }