Я пытаюсь создать 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? Если да, то как?
Вместо создания дерева вручную, это может быть на самом деле проще изменить DataTemplate прилипать к данным и связываться с ней. Как структурируются ваши данные? Можете ли вы привести пример данных? – OmegaMan
Существует протокол связи на основе ASN1. Классы автоматически создаются с использованием компилятора ASN1. Из этих классов я планирую реализовать дочерние классы как ViewModel, чтобы получить TreeItem из своих собственных свойств. Когда данные поступают из TCP/IP, декодер автоматически преобразует данные в эти объекты ASN1, поэтому дерево создается автоматически в конце. – frankieee