public async Task LoadAsync() { var childList = new List <NavigationDirectoryItemViewModel>(); var proejctlookup = await _projectLookupService.GetProjectLookupAsync(); foreach (var item in proejctlookup) { var tempProject = new NavigationDirectoryItemViewModel(item.Id, item.DisplayMember, nameof(ProjectDetailViewModel)); childList.Add(tempProject); var relatedEntities = _projectLookupService.GetRelatedEntites(item.Id); if (relatedEntities != null) { var groupItemWorkspace = new NavigationDirectoryItemViewModel (item.Id, TreeViewNames.Workspaces, nameof(ProjectWorkspaceListViewModel), IconNames.EmoticonCool); tempProject.AddDirItem(groupItemWorkspace); var groupItemComponents = new NavigationDirectoryItemViewModel (item.Id, TreeViewNames.Components, nameof(ProjectComponentsListViewModel)); tempProject.AddDirItem(groupItemComponents); var groupItemFiles = new NavigationDirectoryItemViewModel( item.Id, TreeViewNames.Files, nameof(ProjectFilesListViewModel)); tempProject.AddDirItem(groupItemFiles); foreach (var relatedEntitiesItem in relatedEntities) { switch (relatedEntitiesItem.Entity) { case nameof(ProjectWorkspace): if (relatedEntitiesItem.DisplayMember == null) { relatedEntitiesItem.DisplayMember = "***no name***"; } groupItemWorkspace.AddDirItem(new NavigationDirectoryItemViewModel (relatedEntitiesItem.Id, relatedEntitiesItem.DisplayMember, nameof(ProjectWorkspaceViewModel))); break; case nameof(ProjectComponent): groupItemComponents.AddDirItem(new NavigationDirectoryItemViewModel (relatedEntitiesItem.Id, relatedEntitiesItem.DisplayMember, nameof(ProjectComponentViewModel))); break; case nameof(ProjectFiles): groupItemFiles.AddDirItem(new NavigationDirectoryItemViewModel (relatedEntitiesItem.Id, relatedEntitiesItem.DisplayMember, nameof(ProjectFileViewModel))); break; default: break; } } } } _rootDirectoryItem.Items = childList; DirItems = _rootDirectoryItem.Traverse(_rootDirectoryItem); }
public ProjectNavigationViewModel(IProjectLookupDataService projectLookupService) { _projectLookupService = projectLookupService; Projects = new ObservableCollection <NavigationItemViewModel>(); _rootDirectoryItem = new NavigationDirectoryItemViewModel(0, "Root", "Root"); }