예제 #1
0
        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());
        }
예제 #2
0
        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;
                    }
                }
            }
        }