1

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

分层数据结构如何工作,子级能否显示其他属性而不是与父级相同的属性?目前我正在尝试用列制作一个treelistview

客户/事项/时间

如果我添加一个客户并且它有同样的问题,那么父母会将它的小时数更改为总小时数到孩子们加起来的总小时数。

这是一个例子

我加

John / 书写纸 / 1 小时
John / 书写纸 / 2 小时
John / 书写纸 / 0.5 小时

我的树列表视图将显示

John / 书写纸 /3.5 小时 < 这是家长
-John / 书写纸 / 1 小时
-John / 书写纸 / 2 小时
-John / 书写纸 / .5 小时 < 这些是孩子

相反,我希望它显示

John / Writing Paper/ 3.5 小时
- 12:00 am - 1:00 pm / 写引言
- 2:00 pm - 4:00 pm / 写正文
- 3:00 pm - 3:30 pm / 写结论

我正在使用两个可观察的集合。一个是父母,一个是孩子。

我的问题基本上是。我可以更改分层数据结构以显示不同的属性吗?不同的信息。我不想重复显示相同的客户事务时间。相反,我想为孩子展示不同的属性。因为父母将显示信息属于谁。顺便说一句,我正在尝试为 XAML 和 C# 执行此操作

提前致谢!!
-凯文

4

2 回答 2

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>  

乔比乔伊

于 2009-11-16T22:25:55.703 回答
1

如果您的父母和孩子是不同的对象类型,有一个非常简单的答案:只需在 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>

这种技术并非在所有情况下都有效,但当它有效时,它非常强大且富有表现力。

如果 Parent 和 Child 是相同类型但具有不同参数,则另一种变化是创建一个ItemTemplateSelector调用以根据数据值LoadResource()加载适当的命名。HierarchicalDataTemplate

于 2009-11-17T05:49:05.480 回答