/// <summary> /// Toggles the given nodes expanded state. /// </summary> /// <param name="node">The node to be expanded or collapsed.</param> public async Task ToggleNodeIsExpandedAsync(TreeNode <TItem> node) { var wasExpanded = node.IsExpanded; // if expanding and Nodes is null then request data if (!node.Isleaf && !wasExpanded && node.Nodes == null) { // fetch direct child items var key = node.Data is null ? null : KeyField !(node.Data !).ToString(); var items = await GetDataAsync(key).ConfigureAwait(true); // add new nodes to existing node node.Nodes = new List <TreeNode <TItem> >(); // indicates data fetched, even if no items returned UpdateModel(items); // notify any listeners that new data fetched await NodeUpdated.InvokeAsync(node).ConfigureAwait(true); } // expand / collapse and notify node.IsExpanded = !wasExpanded; if (wasExpanded) { await NodeCollapsed.InvokeAsync(node).ConfigureAwait(true); } else { await NodeExpanded.InvokeAsync(node).ConfigureAwait(true); } }
protected void OnNodeExpanded() { NodesExpandedCount++; NodeExpanded?.Invoke(null, null); }