2009-11-16 44 views
1

我目前正在编写一个WPF TreeListView。 我想知道一些事情。分层数据结构WPF TreeListView

分层数据结构如何工作,并且子项可以显示其他属性而不是与父项相同的属性? 目前,我试图让treelistview与列

客户端/物/小时

如果我添加一个客户端,它具有相同的事情再 家长会改变它的小时总小时就到了儿童累计的总小时数。

下面是一个例子

我添加

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

我的树列表视图将显示

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

相反,我想它显示

约翰/书写纸/ 3.5小时
- 12:00 - 下午1:00 /写引进
- 下午2:00 - 下午4:00 /写的身体
- 下午3:00 - 3 :30 pm /写下结论

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

我的问题基本上是。我可以更改分层数据结构以显示不同的属性吗?不同的信息。我不希望重复显示相同的客户端时间。 相反,我想为孩子展示不同的属性。由于父母将显示这些信息属于谁。 顺便说一句,我想为XAML和C#

在此先感谢!
-Kevin

回答

1

您可以为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

+0

这将无法正常工作,因为Hierarchical DataTemplate只接受儿童权利? – Kevin 2009-11-16 22:36:20

+0

哎呀,它周围放了一个网格.. – 2009-11-16 22:40:27

1

如果你的父母和孩子都是不同的对象类型,有一个很简单的答案:

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

这种技术不工作:只要在ResourceDictionary中使用多个HierarchicalDataTemplates在所有情况下,但是当它发生时,它是非常强大和富有表现力的。

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