0

如何使用分层数据模板将树数据结构绑定到树列表控件。不同之处在于,我不打算为层次结构中的每个级别创建不同的类型,而是只使用一种类型“节点”,由“类型”枚举区分,指示其在层次结构中的级别。这是一个可行的方法吗。如何使用 TreeListControl 显示数据。

public class TreeNode<T> where T : new()
    {
        public TreeNode<T> Parent { get; set; }

        public IList<TreeNode<T>> Children { get; set; }

        protected TreeNodeType Type { get;  set; }

        public T Current { get; set; }

        public TreeNode()
        {

        }

        public TreeNode(TreeNodeType type)
        {
            this.Type = type;
            this.Current = new T();
            this.Children = new List<TreeNode<T>>();
        }

        public void AddChildren(TreeNode<T> child)
        {
            child.Parent = this;
            this.Children.Add(child);
        }

        public override string ToString()
        {
            return string.Format("Type :{0} Name :{1}", this.Type, this.Current);
        }
    }



/// <summary>
/// Tree node type
/// </summary>
public enum TreeNodeType
{
    Manager = 0,

    Employee,
}



public class EmployeeNode
{
        public string Name { get; set; }

        public override string ToString()
        {
            return this.Name;
        }
    }
4

2 回答 2

1

您将需要使用DataTemplateSelector. MSDN描述了如何使用一个。即使该示例是针对 a 的ListBox,您也可以使用 a 来执行此操作TreeView

于 2013-08-28T17:47:37.300 回答
0

我创建了一个始终返回相同模板的数据选择器。这将为自引用数据的每个节点返回相同的模板。

 public class HierarchialDataTemplateSelector : DataTemplateSelector
    {
        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            if (element != null && item != null)
            {
                return element.FindResource("HierarchialDataTemplate") as DataTemplate;
            }
            return null;
        }
    }
于 2013-08-30T13:46:59.060 回答