我正在尝试将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>
有什么建议吗?
答案 0 :(得分:1)
您需要将ItemsSource应用于子项,如下所示:
<HierarchicalDataTemplate DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding DisplayValue}"/>
</HierarchicalDataTemplate>
我基于DataType应用了这个DataTemplate,这样如果子类型相同(TeamsTreeViewItem)应该自动将它应用于它找到的那个类型的项目,即使它是一个孩子,孙子或者伟大的太棒了......孙子。只需确保包含TeamsTreeViewItem定义的命名空间(此处表示为“local”)。