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