我目前正在写一个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
您可以为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>
苡乐
如果你的父母和孩子都是不同的对象类型,有一个很简单的答案:只要在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
取决于数据值。