对于场景 - 组织有不同的部门,每个部门有不同的员工,分层数据模板完美地运作。
具有子群集(问题项目组)和问题项目的问题文件(父群集)等场景如何?如下所示:
Bilogy(家长群)
这里我有两个实体 - Cluster和Question Item。群集可以包含群集列表以及答案项列表。
基本上问题来自于群集的相同分层数据模板应该绑定到两个项目源,一个用于子群集,一个用于问题项目。 在这种情况下,有没有办法使用分层数据模板,以便我可以使用树视图。
我正在使用SIlverlight 4.0。
答案 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数据模板/数据模板。