TreeView项目 - 分层数据模板

时间:2011-05-18 07:37:26

标签: c# silverlight telerik hierarchicaldatatemplate radtreeview

对于场景 - 组织有不同的部门,每个部门有不同的员工,分层数据模板完美地运作。

具有子群集(问题项目组)和问题项目的问题文件(父群集)等场景如何?如下所示:

Bilogy(家长群)

  • 第1组(子群集)
    • 问题1(问题项目)
    • 问题2(问题项目)
  • 第2组(儿童群组)
    • 第1组(儿童群组)
    • 问题1(问题项目)
    • 问题2(问题项目)

这里我有两个实体 - Cluster和Question Item。群集可以包含群集列表以及答案项列表。

基本上问题来自于群集的相同分层数据模板应该绑定到两个项目源,一个用于子群集,一个用于问题项目。 在这种情况下,有没有办法使用分层数据模板,以便我可以使用树视图。

我正在使用SIlverlight 4.0。

2 个答案:

答案 0 :(得分:2)

是的,您应该能够通过HeirarchicalDataTemplates实现这一目标。

您可以为ParentCluster,ChildCluster创建HeirarchicalDataTemplates,然后使用普通DataTemplate作为问题。

 <HierarchicalDataTemplate DataType="{x:Type ParentClusterViewModel}" ItemsSource="{Binding ChildItems}">
    <ParentClusterView />
</HierarchicalDataTemplate>

<HierarchicalDataTemplate DataType="{x:Type ChildClusterViewModel}" ItemsSource="{Binding ChildItems}">
    <ChildClusterView />
</HierarchicalDataTemplate>

             

如果你有一个基类'TreeItemBase',你的所有树ViewModes继承,那么你将能够做你想要的。

public abstract class TreeItemBase
{
    public List<TreeItemBase> ChildItems { get; set; }
}  

public class ParentClusterViewModel : TreeItemBase { ... }
public class ChildClusterViewModel : TreeItemBase { ... }
public class QuestionViewModel : TreeItemBase { ... }

答案 1 :(得分:1)

为此找到了解决方案。 基本上Cluster和QuestionItem都是WorkItem的类型。我将它们抽象为WorkItem并在集群中使用了一组工作项,它返回了QuestionItems和子集群的组合列表。在TemplateSelector中重写了SelectTemplate,以基于Work Item类型提供Hierarchical数据模板/数据模板。