分级数据结构WPF TreeListView(Hierarchical Data Structure

2019-09-29 02:42发布

我目前正在写一个WPF TreeListView。 我想知道几件事情。

如何分层数据结构的工作,可孩子们显示其他属性,而不是相同的属性作为家长吗? 目前,我试图与该列的treelistview

客户端/物/小时

如果我添加一个客户端,它具有对同一事项,则父母会改变它的时间总小时,由孩子加起来小时的总量。

下面是一个例子

我加

约翰/书写纸/1小时
约翰/书写纸/2小时
约翰/书写纸/ 1.5小时

我的树形列表视图中会显示

约翰/书写纸/3.5小时<这是父
- 约翰/书写纸/1小时
- 约翰/书写纸/2小时
- 约翰/书写纸/ 1.5小时<这些都是孩子

相反,我想它显示

约翰/书写纸/ 3.5小时
- 12:00 AM - 1:00 PM /写的介绍
- 下午2:00 - 下午4:00 /写的身体
- 下午3:00 - 3:30 PM /写的结论

我使用的两个可观察集合。 其中一个是父,一个是儿童。

我的问题主要是。 我可以改变分层数据结构来显示不同的属性? 不同的信息。 我不想上显示相同的客户端物质小时重复。 相反,我想,以示对孩子不同的属性。 由于家长会呈现出的信息是属于谁的。 顺便说一句,我试图对XAML和C#这样做

提前致谢!!
-Kevin

Answer 1:

您可以为HierarchicalDataTemplate设置DataTrigger,有不同的属性绑定。 下面只是一个例子。 请在此线程检查这个刚才的答复,以防万一你需要更多的想法。

 <HierarchicalDataTemplate  DataType="{x:Type local:Person}" ItemsSource="{Binding People}" >
    <Grid>
      <TextBlock x:Name="fName" Text="{Binding FirstName}"/>
      <TextBlock x:Name="lName" Text="{Binding LastName}" Visibility="Collapsed"/>
   </Grid>
   <HierarchicalDataTemplate.Triggers> 
    <DataTrigger Binding="{Binding State}" Value="A">
      <Setter TargetName="fName" Property="Visibility" Value="Collapsed"/>
       <Setter TargetName="lName" Property="Visibility" Value="Visible"/>
    </DataTrigger>
  </HierarchicalDataTemplate.Triggers> 
</HierarchicalDataTemplate>  

苡乐



Answer 2:

如果你的父母和孩子都是不同的对象类型,有一个很简单的答案:只要在ResourceDictionary中使用多个HierarchicalDataTemplates:

<TreeView ItemsSource="{Binding Parents}">

  <TreeView.ResourceDictionary>

    <HierarchicalDataTemplate
        TargetType="{x:Type my:ParentType}"
        ItemsSource="{Binding Children}">

      ... parent content ...

    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate
        TargetType="{x:Type my:ChildType}"
        ItemsSource="{Binding Children}">

      ... child content ...

    </HierarchicalDataTemplate>

  </TreeView.ResourceDictionary>
</TreeView>

这种技术不会在所有情况下工作,但是当它是非常强大和表现力。

在此另一种变型,如果父母与孩子的类型相同但具有不同的参数是创建一个ItemTemplateSelector调用LoadResource()加载命名为适当HierarchicalDataTemplate取决于数据值。



文章来源: Hierarchical Data Structure WPF TreeListView