protected override async Task OnParametersSetAsync() { if (_rootNodes == null) { throw new ArgumentException($"One of the following must be supplied {nameof(RootNode)} or {nameof(RootNodes)} (but NOT BOTH)"); } if (NodeTemplate == null) { throw new ArgumentException($"The parameter {nameof(NodeTemplate)} has not been set"); } if (GetChildNodesCallback == null) { throw new ArgumentException($"The parameter {nameof(GetChildNodesCallback)} has not been set"); } // ensure everything is expanded up to the selected node var pathToSelected = new List <TNode>(); BuildPathToSelected(this.RootNodes, pathToSelected); //if (pathToSelected.Count > 0) pathToSelected.RemoveAt(0); // don't expand the selected node foreach (var pathNode in pathToSelected) { if (this.IsNodeExpanded(pathNode) == false) { this._expandedNodes[pathNode] = true; await ExpandStateChanged.InvokeAsync(new ExpandedStateChangedArgs <TNode>(pathNode, true)); } } await base.OnParametersSetAsync(); }
internal async Task SetExpandedNodeAsync(TNode node, bool expanded) { this._expandedNodes[node] = expanded; await ExpandStateChanged.InvokeAsync(new ExpandedStateChangedArgs <TNode>(node, expanded)); await EnsureSelectedNodeIsVisible(); StateHasChanged(); }
/// <summary> /// Default ctor /// </summary> public EntityTreeView() { SelectionManager = new SelectionManager(); treeView = new TreeViewX { Dock = DockStyle.Fill, HideSelection = false }; Controls.Add(treeView); treeView.AfterExpand += (s, x) => ExpandStateChanged.Fire(this); treeView.AfterCollapse += (s, x) => ExpandStateChanged.Fire(this); treeView.AfterSelect += OnTreeViewAfterSelect; treeView.ContextMenuStrip = contextMenuStrip; }