/// <summary> /// 加载所有导航 /// </summary> /// <returns></returns> public Result LoadAllNavigator() { Result result = new Result(); List <NavigateViewModel> navs_ViewModel = new List <NavigateViewModel>(); try { var NavList = navService.GenericService.GetAll().OrderBy(n => n.OrderNum).ToList(); NavList.ForEach(g => { var navObj = new NavigateViewModel(); navObj.Instance(g); navs_ViewModel.Add(navObj); }); result.IsSucess = true; result.ResultCode = 0; result.Datas = JsonConvert.SerializeObject(navs_ViewModel); //result.Message = GetNavTypesJson(); } catch (Exception ex) { result.Message = ex.Message; result.IsSucess = false; result.ResultCode = 1; } return(result); }
/// <summary> /// 组合 ViewModel 和页面,调用这个方法会读取输入程序集的所有 ViewModel 找到标记对应 <see cref="ViewModelAttribute"/> 的页面 /// </summary> /// <param name="viewModel"></param> /// <param name="assembly"></param> public static void CombineViewModel([NotNull] this NavigateViewModel viewModel, [NotNull] Assembly assembly) { if (ReferenceEquals(viewModel, null)) { throw new ArgumentNullException(nameof(viewModel)); } if (ReferenceEquals(assembly, null)) { throw new ArgumentNullException(nameof(assembly)); } if (viewModel.ViewModelPageCollection == null) { viewModel.ViewModelPageCollection = new List <ViewModelPage>(); } viewModel.ViewModelPageCollection.Clear(); foreach (var temp in assembly.DefinedTypes.Where(temp => typeof(IViewModel).IsAssignableFrom(temp.AsType())) ) { viewModel.ViewModelPageCollection.Add(new ViewModelPage(new NavigatableViewModel(temp))); } foreach (var temp in assembly.DefinedTypes.Where(temp => temp.IsSubclassOf(typeof(Windows.UI.Xaml.Controls.Page)))) { var p = temp.GetCustomAttribute <ViewModelAttribute>(); if (p != null) { var viewmodel = viewModel.ViewModelPageCollection.FirstOrDefault(t => t.ViewModel.Name.Equals(p.ViewModel.Name)); if (viewmodel != null) { viewModel.ViewModelPageCollection.Remove(viewmodel); viewModel.ViewModelPageCollection.Add(new ViewModelPage(viewmodel.ViewModel, new NavigatablePage(temp))); } } } }