using System.Windows;
|
using System.Windows.Controls;
|
|
namespace HMI.UI
|
{
|
public class TreeListView : TreeView
|
{
|
public static readonly DependencyProperty ColumnsProperty =
|
DependencyProperty.Register("Columns", typeof(GridViewColumnCollection), typeof(TreeListView),
|
new PropertyMetadata(new GridViewColumnCollection()));
|
|
public GridViewColumnCollection Columns
|
{
|
get { return (GridViewColumnCollection)GetValue(ColumnsProperty); }
|
set { SetValue(ColumnsProperty, value); }
|
}
|
|
public static readonly DependencyProperty ColumnHeaderContainerStyleProperty =
|
DependencyProperty.Register("ColumnHeaderContainerStyle", typeof(Style), typeof(TreeListView),
|
new PropertyMetadata(null));
|
|
public Style ColumnHeaderContainerStyle
|
{
|
get { return (Style)GetValue(ColumnHeaderContainerStyleProperty); }
|
set { SetValue(ColumnHeaderContainerStyleProperty, value); }
|
}
|
|
static TreeListView()
|
{
|
DefaultStyleKeyProperty.OverrideMetadata(typeof(TreeListView),
|
new FrameworkPropertyMetadata(typeof(TreeListView)));
|
}
|
|
public TreeListView()
|
{
|
Columns = new GridViewColumnCollection();
|
}
|
|
protected override DependencyObject GetContainerForItemOverride()
|
{
|
return new TreeListViewItem(0, this);
|
}
|
}
|
|
public class TreeListViewItem : TreeViewItem
|
{
|
public static readonly DependencyProperty ColumnsProperty =
|
DependencyProperty.Register("Columns", typeof(GridViewColumnCollection), typeof(TreeListViewItem),
|
new PropertyMetadata(null));
|
|
public int level { get; private set; }
|
private TreeListView root;
|
|
public TreeListViewItem(int level, TreeListView root)
|
{
|
this.level = level;
|
this.root = root;
|
this.Loaded += TreeListViewItem_Loaded;
|
}
|
|
public GridViewColumnCollection Columns
|
{
|
get { return (GridViewColumnCollection)GetValue(ColumnsProperty); }
|
set { SetValue(ColumnsProperty, value); }
|
}
|
|
static TreeListViewItem()
|
{
|
DefaultStyleKeyProperty.OverrideMetadata(typeof(TreeListViewItem),
|
new FrameworkPropertyMetadata(typeof(TreeListViewItem)));
|
}
|
|
private void TreeListViewItem_Loaded(object sender, RoutedEventArgs e)
|
{
|
if (root is TreeListView treeListView)
|
{
|
Columns = treeListView.Columns;
|
}
|
}
|
|
protected override DependencyObject GetContainerForItemOverride()
|
{
|
return new TreeListViewItem(level + 1, root);
|
}
|
}
|
}
|