private void SaveToModel(SettingsPageBaseViewModel vm) { if (vm != null) { var options = GetService <ISettingsManager>(); vm.SaveOptionsToModel(options.Options); } }
/// <summary> /// Applies the current appearance settings to the view. /// </summary> /// <param name="vm"></param> private void LoadFromModel(SettingsPageBaseViewModel vm) { if (vm != null) { var options = GetService <ISettingsManager>(); vm.ApplyOptionsFromModel(options.Options); } }
/// <summary> /// Setup viewmodel for edtiting by initializing /// viewmodels from model data and selecting a default page. /// </summary> private void LoadData() { var settings = GetService <ISettingsManager>(); var List = new List <SettingsPageBaseViewModel>() { new GeneralViewModel(), new AppearanceViewModel(settings.Themes), new AboutViewModel() }; for (int i = 0; i < List.Count; i++) { LoadFromModel(List[i]); Pages.Add(List[i]); } SelectedPage = List[0]; IsEditingSettings = true; }
/// <summary> /// Class Constructor /// </summary> /// <param name="settingsManager"></param> public SettingsPageViewModel(List <IPageTemplateModel> optionalPages = null) { var reslocService = GetService <IResourceLocator>(); _PageTemplateModels = new SortedList <uint, IPageTemplateModel>(); _PageTemplateModels.Add(0, reslocService.GetNewPageTemplateModel( Assembly.GetAssembly(typeof(GeneralSettingsView)).GetName().Name, "Views/Pages/SettingsPages/DataTemplates.xaml", "GeneralSettingsTemplate", new GeneralSettingsViewModel("General"), "Options", 0)); _PageTemplateModels.Add(9999999, reslocService.GetNewPageTemplateModel( Assembly.GetAssembly(typeof(AboutViewModel)).GetName().Name, "Views/Pages/SettingsPages/DataTemplates.xaml", "AboutSettingsTemplate", new AboutViewModel(), "About", 9999999)); // Add optional page models in addition to those already implemented above. if (optionalPages != null) { // Icon size can be setup on Appearance page if application contains that setting page // So, we hide it from General page if Appearance page should be available if (optionalPages.Count > 0) { SetGeneralIconSizeVisibility(false); } foreach (var item in optionalPages) { _PageTemplateModels.Add(item.SortPriority, item); } } _Pages = new ObservableCollection <SettingsPageBaseViewModel>(); _PageTemplateSelector = new SettingsTemplateSelector(); foreach (var item in _PageTemplateModels) { var template = reslocService.GetResource <DataTemplate>( item.Value.AssemblyName, item.Value.ResourceFilename, item.Value.ResourceKey) as DataTemplate; // Register a DataTemplate for each settings view page to map between view and model _PageTemplateSelector.RegisterDataTemplate(item.Value.ViewModelInstance.GetType(), template); var vm = item.Value.ViewModelInstance as SettingsPageBaseViewModel; if (vm != null) { vm.IsDirty = false; _Pages.Add(vm); if (_SelectedPage == null) { _SelectedPage = (vm); } // Is current document a EditTranslationsDocumentViewModel? // Then try to load default data for it... vm.DirtyFlagChangedEvent += SettingsPage_DirtyFlagChangedEvent; } } _IsDirty = false; }