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等等。。