【发布时间】:2011-05-26 06:22:16
【问题描述】:
我正在尝试将 IList 绑定到分层显示中的 WPF TreeView。这是我的对象:
public class TeamsTreeViewItem
{
public string DisplayValue { get; set; }
public string KeyValue { get; set; }
readonly List<TeamsTreeViewItem> children = new List<TeamsTreeViewItem> ();
public IList<TeamsTreeViewItem> Children
{
get
{
return children;
}
}
public override string ToString ()
{
return DisplayValue;
}
}
我不知道一个特定的对象会有多少个孩子,孩子们也可能有孩子。
我对我的 HierarchialDataTemplate 大惊小怪,但没有成功:
<TreeView Canvas.Left="263" Canvas.Top="12" Height="200" Name="TeamTreeView" Width="120">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding DisplayValue}" >
<TextBlock Text="{Binding DisplayValue}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding Children}" >
<TextBlock Text="{Binding DisplayValue}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
有什么建议吗?
【问题讨论】:
-
您应该只有一个 HierarchicalDataTemplate,因为您的所有节点都是 TeamsTreeViewItem,否则 WPF 将如何知道要使用哪一个?您还需要将 ItemsSource 绑定到 Children 集合: ItemsSource="{Binding Path=Children}"
标签: wpf xml binding treeview ilist