2015-07-11 1 views
1

Я пытаюсь создать TreeView с количеством данных столбца в каждой строке (например, 2 столбца в моем примере, свойство и значение), подобно this thread , Разница с решением, предложенным Хиной, заключается в том, что дерево может быть немного сложнее. Глубина для каждой ветви может быть разной (поэтому в некоторых случаях узлы могут иметь больше детей, чем другие).Отобразить treeviewitem как строки сетки в wpf, где ветви могут иметь другую глубину

Я бы реализовать код со следующим классом, таким образом, что вложенные элементы возможны:

public class TreeItem 
{ 
    private TreeItem() 
    { 
    } 

    public TreeItem(string property, string value) 
    { 
    if(property == null) 
    { 
     property = string.Empty; 
    } 

    if(value == null) 
    { 
     value = string.Empty; 
    } 

    _property = property; 
    _value = value; 
    } 

    public TreeItem(params TreeItem[] items) 
    { 
    AddItems(items); 
    } 

    public TreeItem(string property, string value, params TreeItem[] items) : this(property, value) 
    { 
    AddItems(items); 
    } 

    public string Property 
    { 
    get 
    { 
     return _property; 
    } 
    } 

    public string Value 
    { 
    get 
    { 
     return _value; 
    } 
    } 

    public IEnumerable<TreeItem> Items 
    { 
    get 
    { 
     return (IEnumerable<TreeItem>)_items; 
    } 
    } 

    private void AddItems(params TreeItem[] items) 
    { 
    foreach(TreeItem item in items) 
    { 
     if(item != null) 
     { 
     _items.Add(item); 
     } 
    } 
    } 

    private readonly string _property; 

    private readonly string _value; 

    private readonly List<TreeItem> _items = new List<TreeItem>(); 
} 

Можно ли реализовать это с помощью WPF? Если да, то как?

+0

Вместо создания дерева вручную, это может быть на самом деле проще изменить DataTemplate прилипать к данным и связываться с ней. Как структурируются ваши данные? Можете ли вы привести пример данных? – OmegaMan

+0

Существует протокол связи на основе ASN1. Классы автоматически создаются с использованием компилятора ASN1. Из этих классов я планирую реализовать дочерние классы как ViewModel, чтобы получить TreeItem из своих собственных свойств. Когда данные поступают из TCP/IP, декодер автоматически преобразует данные в эти объекты ASN1, поэтому дерево создается автоматически в конце. – frankieee

ответ

Смежные вопросы