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; }