代码之家  ›  专栏  ›  技术社区  ›  Kevin

层次数据结构WPF TreeListView

  •  1
  • Kevin  · 技术社区  · 16 年前

    我正在写一个WPF TreeListView。 我想知道一些事情。

    分层数据结构是如何工作的?子级是否可以显示其他属性,而不是与父级相同的属性?

    客户/事项/小时

    如果我加了一个客户,它也有同样的问题 家长会将其小时数更改为总小时数,并将其更改为子代累计的总小时数。

    我补充

    约翰/写论文/1小时
    约翰/写论文/2小时

    我的树列表视图将显示


    -约翰/写论文/1小时
    -约翰/写论文/2小时

    相反,我想展示一下


    -12:00 am-1:00 pm/撰写介绍
    -下午2:00-4:00/写下尸体
    -下午3:00-下午3:30/写下结论

    我的问题是。是否可以更改分层数据结构以显示不同的属性?不同的信息。我不想重复显示同一客户的工作时间。 相反,我想为孩子展示不同的属性。因为家长将显示信息属于谁。 顺便说一句,我想为XAML和C#

    提前谢谢!!
    -凯文

    2 回复  |  直到 14 年前
        1
  •  1
  •   Community Mohan Dere    8 年前

    您可以为HierarchicalDataTemplate设置DataTrigger并具有不同的属性绑定。举个例子。 Please check this earlier answer in this thread just in case you need more ideas.

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

    Jobi Joy

        2
  •  1
  •   Ray Burns    16 年前

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