private UIElement Visualize(object obj)
{
// Create top level table grid
Grid tableGrid = new Grid();
dispatcher = tableGrid.Dispatcher;
Grid.SetIsSharedSizeScope(tableGrid, true);
tableGrid.RowDefinitions.Add(new RowDefinition()
{
Height = new GridLength(1, GridUnitType.Auto),
});
// Create table header
TreeViewItem header = new TreeViewItem();
Grid headerGrid = CreateTreeItemGrid(0);
TextBlock name = new TextBlock();
name.Text = "Name";
name.FontWeight = FontWeights.Bold;
Grid.SetColumn(name, NameColumnIndex);
headerGrid.Children.Add(name);
TextBlock value = new TextBlock();
value.Text = "Value";
value.FontWeight = FontWeights.Bold;
Grid.SetColumn(value, ValueColumnIndex);
headerGrid.Children.Add(value);
TextBlock type = new TextBlock();
type.Text = "Type";
type.FontWeight = FontWeights.Bold;
Grid.SetColumn(type, TypeColumnIndex);
headerGrid.Children.Add(type);
emptyListItem = new TreeViewItem();
emptyListItem.Padding = new Thickness(0);
emptyListItem.Focusable = false;
Grid.SetColumn(emptyListItem, 1);
emptyListItem.Focusable = false;
headerGrid.Children.Add(emptyListItem);
header.Focusable = false;
header.Header = headerGrid;
// Create table tree
TreeView tree = new TreeView();
IResultTreeItem resultTreeItem = ResultTreeItem.Create(obj, obj.GetType(), "result", null, this);
tree.PreviewKeyDown += Tree_PreviewKeyDown;
tree.Items.Add(header);
tree.Items.Add(CreateTreeItem(resultTreeItem, 0));
((TreeViewItem)tree.Items[1]).IsSelected = true;
tableGrid.Children.Add(tree);
return tableGrid;
}