【发布时间】:2013-12-03 04:31:00
【问题描述】:
这似乎是一个常见问题,但我无法从其他问题的答案中得到它。
我有一家公司,有多个项目,每个项目可以有多个任务。公司类包含一些元数据以及它拥有的项目列表,项目类也有一些元数据和它拥有的任务列表。我想要做的是在树视图中显示这个层次结构。我制作了一个公司的样本对象,该公司有 2 个项目,project1 有 2 个任务。树视图一次只能显示一家公司,因此根树视图项是项目。
这是我对该问题的尝试,但没有显示任何内容。
<TreeView ItemsSource="{Binding listOfProjects}" Margin="10" Height="200">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding listOfTasks}" DataType="{x:Type local:Task}">
<TreeViewItem Header="{Binding name}"/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TreeViewItem Header="{Binding name}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我该如何让它正确?我应该将什么绑定到 ItemsSource?对于 TreeViewItem 标头,我如何让它知道要绑定哪个字段?目前,我有 {Binding name},但如何区分它的来源(因为项目有一个字段“名称”,任务也有)。
我将进一步扩展层次结构(一个任务可以有多个部分,依此类推),但我假设每个附加级别都将与前 2 个相同。
编辑:这里是我的公司、项目和任务类。
class Company
{
public List<Project> listOfProjects;
public string name { get; set; }
private int companyID { get; set; }
public Company()
{
companyID = 0;
name = "Default";
listOfProjects = new List<Project>();
}
public Company(string inName)
{
companyID = 0;
name = inName;
listOfProjects = new List<Project>();
}
}
class Project
{
private int projID { get; set; }
public string name { get; set; }
public DateTime startDate { get; set; }
public DateTime endDate { get; set; }
public string region { get; set; }
private int companyID { get; set; }
public List<Task> listOfTasks;
public Project()
{
projID = 0;
name = "Default";
startDate = new DateTime();
endDate = new DateTime();
region = "Default";
companyID = 0;
listOfTasks = new List<Task>();
}
public Project(string inName)
{
projID = 0;
name = inName;
startDate = new DateTime();
endDate = new DateTime();
region = "Default";
companyID = 0;
listOfTasks = new List<Task>();
}
}
Tasks atm 除了构造函数之外没有任何内容。它有 2 个字段,projectID 和 name。
【问题讨论】:
-
你能分享你的数据模型的代码吗?
-
我已将其添加到问题中。
标签: c# wpf xaml treeview hierarchicaldatatemplate