C# 用于向treeview添加混合数据的HierarchicalDataTemplate

C# 用于向treeview添加混合数据的HierarchicalDataTemplate,c#,wpf,xaml,binding,hierarchicaldatatemplate,C#,Wpf,Xaml,Binding,Hierarchicaldatatemplate,嗨,我有一个树状视图来显示一些层次数据。我的课程如下 public class Response { public string UserId { get; set; } public CaseItems Cases { get; set; } } public class CaseItem { public int ID { get; set; } public string Name { get; set; } public CaseFolders

嗨,我有一个树状视图来显示一些层次数据。我的课程如下

public class Response
{
    public string UserId { get; set; }
    public CaseItems Cases { get; set; }
}

public class CaseItem
{
    public int ID { get; set; }
    public string Name { get; set; }
    public CaseFolders Folders { get; set; }
}

public class CaseFolder
{
    public int FolderID { get; set; }
    public string FolderName { get; set; }
    public CaseItem Case { get; set; }

    public CaseFolders Folders { get; set; }
}

public class CaseItems : List<CaseItem> { };

public class CaseFolders : List<CaseFolder> { };

public class Responses : List<Response> { };
        <TreeView Name="tvTest"
              ItemsSource="{Binding}">
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type local:Response}"
                                      ItemsSource="{Binding}">
                <Label Content="{Binding UserId}"/>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate DataType="{x:Type local:CaseItem}"
                                      ItemsSource="{Binding Cases}">
                <Label Content="{Binding Path=Name}"/>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate DataType="{x:Type local:CaseFolder}"
                                      ItemsSource="{Binding ????}">
                <Label Content="{Binding Path=FolderName}"/>
            </HierarchicalDataTemplate>


        </TreeView.Resources>
    </TreeView>
XAML如下所示

public class Response
{
    public string UserId { get; set; }
    public CaseItems Cases { get; set; }
}

public class CaseItem
{
    public int ID { get; set; }
    public string Name { get; set; }
    public CaseFolders Folders { get; set; }
}

public class CaseFolder
{
    public int FolderID { get; set; }
    public string FolderName { get; set; }
    public CaseItem Case { get; set; }

    public CaseFolders Folders { get; set; }
}

public class CaseItems : List<CaseItem> { };

public class CaseFolders : List<CaseFolder> { };

public class Responses : List<Response> { };
        <TreeView Name="tvTest"
              ItemsSource="{Binding}">
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type local:Response}"
                                      ItemsSource="{Binding}">
                <Label Content="{Binding UserId}"/>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate DataType="{x:Type local:CaseItem}"
                                      ItemsSource="{Binding Cases}">
                <Label Content="{Binding Path=Name}"/>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate DataType="{x:Type local:CaseFolder}"
                                      ItemsSource="{Binding ????}">
                <Label Content="{Binding Path=FolderName}"/>
            </HierarchicalDataTemplate>


        </TreeView.Resources>
    </TreeView>

上面的xaml仅显示Resonse类的用户ID。

您必须更新模板,如下所示:

      <TreeView Name="tvTest"
              ItemsSource="{Binding}">
            <TreeView.Resources>
                <HierarchicalDataTemplate DataType="{x:Type local:Response}"
                                      ItemsSource="{Binding Cases}">
                    <Label Content="{Binding UserId}"/>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type local:CaseItem}"
                                      ItemsSource="{Binding Folders}">
                    <Label Content="{Binding Path=Name}"/>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type local:CaseFolder}"
                                      ItemsSource="{Binding Folders}">
                    <Label Content="{Binding Path=FolderName}"/>
                </HierarchicalDataTemplate>


            </TreeView.Resources>
        </TreeView>


谢谢

哇!这就像一个迷人的男人。你能解释一下你做了什么吗。我一整天都在努力完成这项工作。你的第一个模板是第一级模板,因此为了生成第二级模板,它应该有ItemsSource作为案例,类似于案例,项目文件夹是ItemsSource等等。。