【发布时间】:2021-09-06 17:34:48
【问题描述】:
设置
我有一个带有ObservableCollection<StructureItem> 的 ViewModel 和一个用于显示它的 View。
类本身是递归的:
public class StructureItem
{
public List<StructureItem> Children { get; set; } = new List<StructureItem>();
public List<IoItem> Ios { get; set; } = new List<IoItem>();
public string Name { get; set; }
}
这里是IoItem
public class IoItem
{
public string Name { get; set; }
public int Position { get; set; }
}
TreeView 的当前 xaml
<TreeView ItemsSource = "{Binding Structure}">
<TreeView.Resources>
<DataTemplate DataType="kernel:IoItem">
<Label Content="{Binding Name}"></Label>
</DataTemplate>
</TreeView.Resources>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="kernel:StructureItem">
<Label Content="{Binding Name}"></Label>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
问题
我尝试了多种不同的 xaml,但我得到的最好结果是 StructureItem 正确显示(见上文)。 IoItem 要么被忽略,要么破坏整个 Treeview。
如何使用 xaml 显示这个结构?
【问题讨论】:
-
检查这个似乎类似的问题:stackoverflow.com/questions/15240326/…
-
你希望看到什么作为节点?
-
@I.Step 我尝试调整这个答案,但我最终在最高级别失败了,只显示了一个 TreeviewItem 类型名称为 StructureItem
-
@Rekshino 现在只有每个孩子和 Io 的名字。一旦可行,我想更改格式以突出显示差异。