在树视图中显示简单结构

时间:2015-08-07 09:04:52

标签: c# wpf treeview

我试图在树视图中显示这个结构:一个Product有一个TreeViewItem,每个TreeViewItem可能有一个TreeViewItems列表:

class Product {
    public string Name {get;set;}
    public TreeViewItem Item {get; set;}
}

class TreeViewItem {
    public string Name {get; set;}
    public List<TreeViewItem> Subitems {get;set;}
}

我试过这个,我认为可行:

    <TreeView ItemsSource="{Binding Product.Item}">

        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type DataModel:TreeViewItem}">
                <TextBlock Text="{Binding Name}"></TextBlock>
            </HierarchicalDataTemplate>
        </TreeView.Resources>

    </TreeView>

但它什么都没显示。我已经尝试了很长一段时间,但感到迷茫,非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您分配给TreeView.ItemsSource的值必须实现IEnumerable,您还需要在HierarchicalDataTemplate

上指定ItemsSource
class Product {
    public string Name {get;set;}
    public TreeViewItem Item {get; set;}
    public IEnumerable<TreeViewItem> Items { get { return new[] { item }; }
}

<TreeView ItemsSource="{Binding Product.Items}">

        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type DataModel:TreeViewItem}" ItemsSource="{Binding SubItems}">
                <TextBlock Text="{Binding Name}"></TextBlock>
            </HierarchicalDataTemplate>
        </TreeView.Resources>

    </TreeView>