c# - 为什么我的 TreeView 仅显示一层深度?

标签 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>

VIEWMODEL
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"
                }
            }
        });
    }
}

最佳答案

您正在将模板定义为正好两层深,因此将获得两层树 View 。这是因为您明确声明ItemTemplateHeirarchicalDataTemplate应该是没有子代的DataTemplate

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

关于c# - 为什么我的 TreeView 仅显示一层深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41799750/

相关文章:

c# - 如何捕获从 HttpWebRequest.GetResponseAsync 抛出的异常?

c# - 如何在wpf中添加主题

javascript - 您可以在 Kendo MVVM View 中编写纯 JavaScript 表达式(与 Knockout 一样)吗?

c# - 具有相同 ViewModel 的多个实例的 MVVM-Light Messenger

c# - 仅在选择选项卡时运行查询 WPF MVVM

wpf - WPF中的视频缩略图

c# - 如何在 C# 中有效地设置/获取位模式

c# - 是否有任何开源软件或 c# 库可以从和弦音乐文件中提取钢琴和弦?

c# - 使用 C# 添加机会记录

wpf - 如何确定单击了哪个节点。 Silverlight TreeView