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