protected override void OnInitialize() { base.OnInitialize(); var pages = new List<SettingsPageViewModel>(); _settingsEditors = IoC.GetAll<ISettingsEditor>(); foreach (ISettingsEditor settingsEditor in _settingsEditors) { List<SettingsPageViewModel> parentCollection = GetParentCollection(settingsEditor, pages); SettingsPageViewModel page = parentCollection.FirstOrDefault(m => m.Name == settingsEditor.SettingsPageName); if (page == null) { page = new SettingsPageViewModel { Name = settingsEditor.SettingsPageName, }; parentCollection.Add(page); } page.Editors.Add(settingsEditor); } Pages = pages; SelectedPage = GetFirstLeafPageRecursive(pages); }
private List <SettingsPageViewModel> GetParentCollection(ISettingsEditor settingsEditor, List <SettingsPageViewModel> pages) { if (string.IsNullOrEmpty(settingsEditor.SettingsPagePath)) { return(pages); } string[] path = settingsEditor.SettingsPagePath.Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries); foreach (string pathElement in path) { SettingsPageViewModel page = pages.FirstOrDefault(s => s.Name == pathElement); if (page == null) { page = new SettingsPageViewModel { Name = pathElement }; pages.Add(page); } pages = page.Children; } return(pages); }
protected override void OnInitialize() { base.OnInitialize(); var pages = new List <SettingsPageViewModel>(); _settingsEditors = IoC.GetAll <ISettingsEditor>(); foreach (ISettingsEditor settingsEditor in _settingsEditors) { List <SettingsPageViewModel> parentCollection = GetParentCollection(settingsEditor, pages); SettingsPageViewModel page = parentCollection.FirstOrDefault(m => m.Name == settingsEditor.SettingsPageName); if (page == null) { page = new SettingsPageViewModel { Name = settingsEditor.SettingsPageName, }; parentCollection.Add(page); } page.Editors.Add(settingsEditor); } Pages = pages; SelectedPage = GetFirstLeafPageRecursive(pages); }
protected override async Task OnInitializeAsync(CancellationToken cancellationToken) { await base.OnInitializeAsync(cancellationToken); var pages = new List <SettingsPageViewModel>(); _settingsEditors = IoC.GetAll <ISettingsEditor>(); foreach (var settingsEditor in _settingsEditors) { var parentCollection = GetParentCollection(settingsEditor, pages); var page = parentCollection.FirstOrDefault(m => m.Name == settingsEditor.SettingsPageName); if (page == null) { page = new SettingsPageViewModel { Name = settingsEditor.SettingsPageName, }; parentCollection.Add(page); } page.Editors.Add(settingsEditor); } Pages = pages; SelectedPage = GetFirstLeafPageRecursive(pages); }
protected override void OnInitialize() { base.OnInitialize(); // Keep '_' on top var pages = new List<SettingsPageViewModel>(); _settingsEditors = IoC.GetAll<ISettingsEditor>().OrderBy(p => p.SettingsPagePath).ThenBy(p => p.SettingsPageName); foreach (ISettingsEditor settingsEditor in _settingsEditors) { var parentCollection = GetParentCollection(settingsEditor, pages); var page = parentCollection.FirstOrDefault(m => m.Name.TrimStart('_') == settingsEditor.SettingsPageName.TrimStart('_')); if (page == null) { page = new SettingsPageViewModel { Name = settingsEditor.SettingsPageName.TrimStart('_'), }; parentCollection.Add(page); } page.Editors.Add(settingsEditor); } Pages = pages; SelectedPage = GetFirstLeafPageRecursive(pages); }
private List<SettingsPageViewModel> GetParentCollection(ISettingsEditor settingsEditor, List<SettingsPageViewModel> pages) { if (string.IsNullOrEmpty(settingsEditor.SettingsPagePath)) { return pages; } string[] path = settingsEditor.SettingsPagePath.Split(new[] {'\\'}, StringSplitOptions.RemoveEmptyEntries); foreach (string pathElement in path) { SettingsPageViewModel page = pages.FirstOrDefault(s => s.Name == pathElement); if (page == null) { page = new SettingsPageViewModel {Name = pathElement}; pages.Add(page); } pages = page.Children; } return pages; }