Пример #1
0
        private void SetItems(DisplayFilter filter)
        {
            if (filter == _filter || _allItems.Count == 0)
            {
                return;
            }

            RootItem.ClearAllChildItems();

            foreach (var item in _allItems.Values)
            {
                item.ExecutionOrder = 0;

                if (item.ParentId.HasValue)
                {
                    var parentItem = FindParentItem(item.ParentId.Value, filter);
                    if (filter == DisplayFilter.None || !item.IsInactive)
                    {
                        parentItem.AddChildItem(item);
                    }
                }
            }

            var leafItemSource = _allItems.Values.Where(i => i.IsLeaf);

            if (filter == DisplayFilter.ActiveNodesOnly)
            {
                leafItemSource = leafItemSource.Where(i => !i.IsInactive);
            }

            ResolveExecutionOrder(leafItemSource.ToList());

            _filter = filter;
        }