public IReadOnlyList <CommandBarGroupDefinition> GetSortedGroupsOfDefinition(CommandBarDefinitionBase definition, bool onlyGroupsWithVisibleItems = true) { var groups = ItemGroupDefinitions.Where(x => x.Parent == definition) .Where(x => !ExcludedItemDefinitions.Contains(x)); if (onlyGroupsWithVisibleItems) { groups = groups.Where(x => x.Items.Any(y => y.IsVisible)).ToList(); } return(groups.OrderBy(x => x.SortOrder).ToList()); }
private void ExcludedCommandDefinitions_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.NewItems != null) { foreach (var item in e.NewItems) { foreach (var itemDefinition in ItemDefinitions) { if (itemDefinition.CommandDefinition.GetType() == item.GetType()) { ExcludedItemDefinitions.Add(itemDefinition); } } if (item is CommandDefinition commandDefinition) { commandDefinition.AllowExecution = false; } } } if (e.OldItems != null) { foreach (var item in e.OldItems) { foreach (var itemDefinition in ExcludedItemDefinitions.ToList()) { if (itemDefinition.CommandDefinition.GetType() == item.GetType()) { ExcludedItemDefinitions.Remove(itemDefinition); } } if (item is CommandDefinition commandDefinition) { commandDefinition.AllowExecution = true; } } } }