作为 WPF 的新手,我最近解决了同样的问题。我使用的方法是创建一个新类,用于在树中显示数据。
TreeDisplayItem 类具有将显示的每个类类型的承包商。在每个构造函数中,将为传递的类设置 _display 属性。
itemDef = 类别名称
ItemPrice = 价格 + 数量 + 店铺位置
public class TreeDisplayItem
{
readonly string _display;
readonly string _id;
readonly List<TreeDisplayItem> _items;
public LegoPriceDisplay(ItemDef itemDef, List<TreeDisplayItem> items)
{
...//Root node class type ItemDef
}
public LegoPriceDisplay(ItemPrice price)
{
....//child node type = ItemPrice
}
public List<TreeDisplayItem> Items{ get; private set; }
public string DisplayId
{
get { return _id; }
}
public string Display
{
get { return _display; }
}
}
在 WPF 页面 XAML 中,使用嵌套的 HierarchicalDataTemplates 定义树视图。当然,这仅适用于您具有固定/已知树项深度的用例。就我而言,树视图将向下钻取两层(计算根)
<TreeView Margin="0" Name="TvStorePrices" ItemsSource="{Binding TreeDisplayItemList}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="local:TreeDisplayItem" ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Display}" />
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate DataType="local:TreeDisplayItem" ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Display}" />
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>