为什么我的树视图只显示一个深度?

时间:2017-01-23 05:28:36

标签: c# wpf mvvm treeview treeviewitem

我想创建分层树。我跟随here的每一步,但由于某种原因,它只显示我的一个深度。 这是我得到的:enter image description here 可能是什么原因?

XAML

<TreeView SelectedItemChanged="TreeView_SelectedItemChanged" ItemsSource="{Binding Items}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type local:MyClass}">
            <TextBlock Foreground="Red" Text="{Binding Name}" />
            <HierarchicalDataTemplate.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}" MouseLeftButtonUp="TreeViewItem_MouseLeftButtonUp"/>
                </DataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

视图模型

public class MyClass
{
    public string Name { get; set; }
    public List<MyClass> Children { get; set; }
}

public class MyViewModel
{
    private List<MyClass> _items;
    public List<MyClass> Items
    {
        get
        {
            return _items;
        }
    }

    public MyViewModel()
    {
        _items = new List<MyClass>();
        _items.Add(new MyClass
        {
            Name = "1",
            Children = new List<MyClass>
            {
                new MyClass
                {
                    Name = "1_1",
                    Children = new List<MyClass>
                    {
                        new MyClass
                        {
                            Name = "1_1_1"
                        },
                        new MyClass
                        {
                            Name = "1_1_2"
                        }
                    }
                },
                new MyClass
                {
                    Name = "1_2"
                }
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

您将模板定义为两层深度,因此您将获得两级树视图。这是因为您明确声明ItemTemplate的{​​{1}}应该是HeirarchicalDataTemplate而没有孩子。

我不确定您的模板应该是什么,但如果删除该内部模板,则应该显示所有项目。或者,您也可以将内部模板设为DataTemplate