private TreeViewItem CreateTreeItem(IResultTreeItem resultTreeItem, int level)
{
TreeViewItem item = new TreeViewItem();
Grid grid = CreateTreeItemGrid(level);
UIElement name = CreateTextWithIcon(resultTreeItem.Name, resultTreeItem.Image);
grid.Children.Add(name);
object itemValue = resultTreeItem.Value;
if (itemValue is UIElement)
{
Grid.SetColumn((UIElement)itemValue, ValueColumnIndex);
grid.Children.Add((UIElement)itemValue);
}
else
{
TextBlock value = new TextBlock();
value.Text = resultTreeItem.ValueString;
Grid.SetColumn(value, ValueColumnIndex);
grid.Children.Add(value);
}
TextBlock type = new TextBlock();
type.Text = resultTreeItem.Type;
Grid.SetColumn(type, TypeColumnIndex);
grid.Children.Add(type);
item.Header = grid;
item.Tag = new TreeViewItemTag()
{
ResultTreeItem = resultTreeItem,
Level = level,
};
if (resultTreeItem.Children.Any())
item.Items.Add(0);
item.Expanded += TreeViewItem_Expanded;
return item;
}