/// <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);
            }
        }
Exemplo n.º 2
0
 protected void OnNodeExpanded()
 {
     NodesExpandedCount++;
     NodeExpanded?.Invoke(null, null);
 }