예제 #1
0
        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();
        }
예제 #2
0
        internal async Task SetExpandedNodeAsync(TNode node, bool expanded)
        {
            this._expandedNodes[node] = expanded;
            await ExpandStateChanged.InvokeAsync(new ExpandedStateChangedArgs <TNode>(node, expanded));

            await EnsureSelectedNodeIsVisible();

            StateHasChanged();
        }
예제 #3
0
 /// <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;
 }