CsDebugScript.UI.InteractiveResultVisualizer.TreeViewItem_Expanded C# (CSharp) Method

TreeViewItem_Expanded() private method

private TreeViewItem_Expanded ( object sender, RoutedEventArgs e ) : void
sender object
e System.Windows.RoutedEventArgs
return void
        private void TreeViewItem_Expanded(object sender, RoutedEventArgs e)
        {
            try
            {
                TreeViewItem item = e.Source as TreeViewItem;

                if ((item.Items.Count == 1) && (item.Items[0] is int))
                {
                    TreeViewItemTag tag = (TreeViewItemTag)item.Tag;

                    System.Threading.Tasks.Task.Run(() =>
                    {
                        IResultTreeItem resultTreeItem = tag.ResultTreeItem;
                        var children = resultTreeItem.Children.ToList();

                        foreach (var child in children)
                            if (!(child.Value is UIElement))
                            {
                                string ss = child.ValueString;
                            }

                        item.Dispatcher.InvokeAsync(() =>
                        {
                            int level = tag.Level;
                            TreeViewItem lastItem = null;

                            item.Items.Clear();
                            foreach (var child in children.OrderBy(s => s.Name.StartsWith("[")).ThenBy(s => s.Name))
                                item.Items.Add(lastItem = CreateTreeItem(child, level + 1));

                            // Check if we need to fix empty list item width
                            if (lastItem != null && double.IsNaN(emptyListItem.Width))
                            {
                                item.Dispatcher.BeginInvoke(new Action(() =>
                                {
                                    emptyListItem.Width = item.ActualWidth - lastItem.ActualWidth;
                                }), System.Windows.Threading.DispatcherPriority.Background);
                            }
                        });
                    });
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }