private void ExecuteSelectItem(MarketTreeNode node) { if (node == null || node.InvType == null) { return; } SelectedItem = InvTypes.Single(t => t.TypeId == node.InvType.TypeId); }
public async Task <BindableCollection <MarketTreeNode> > GetMarketTreeAsync( PropertyChangedEventHandler itemPropertyChanged) { var tree = new BindableCollection <MarketTreeNode>(); List <InvType> items = await _eveProfiteerRepository.GetMarketTypes().Include(f => f.Orders).ToListAsync().ConfigureAwait(false); List <InvMarketGroup> groupList = await _staticData.GetMarketGroups().ToListAsync().ConfigureAwait(false); ILookup <int, MarketTreeNode> groups = groupList.Select(t => new MarketTreeNode(t)).ToLookup(t => t.Id); foreach (InvType item in items) { var node = new MarketTreeNode(item); int id = item.MarketGroupId.GetValueOrDefault(); var group = groups[id].Single(); if (group != null) { group.Children.Add(node); node.Parent = group; } node.PropertyChanged += itemPropertyChanged; } foreach (var key in groupList) { var node = groups[key.MarketGroupId].Single(); if (key.ParentGroupId.HasValue) { var parent = groups[key.ParentGroupId.GetValueOrDefault()].Single(); parent.Children.Add(node); node.Parent = parent; } else { tree.Add(node); } } return(tree); }
public async Task <BindableCollection <MarketTreeNode> > GetMarketTree() { var rootList = new BindableCollection <MarketTreeNode>(); List <InvType> items = await GetMarketTypes().ToListAsync().ConfigureAwait(false); List <InvMarketGroup> groupList = await GetMarketGroups().ToListAsync().ConfigureAwait(false); ILookup <int, MarketTreeNode> groups = groupList.Select(t => new MarketTreeNode(t)).ToLookup(t => t.Id); foreach (InvType item in items) { var node = new MarketTreeNode(item); int id = item.MarketGroupId.GetValueOrDefault(); var group = groups[id].Single(); if (group != null) { group.Children.Add(node); node.Parent = group; } } foreach (var key in groupList) { var node = groups[key.MarketGroupId].Single(); if (key.ParentGroupId.HasValue) { var parent = groups[key.ParentGroupId.GetValueOrDefault()].Single(); parent.Children.Add(node); node.Parent = parent; } else { rootList.Add(node); } } return(rootList); }