2

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

像问题论文(父集群)这样的场景如何,既包含子集群(问题项目组)又包含问题项目。如下所示:

生物学(父集群)

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

这里我有两个实体——集群和问题项。集群可以包含集群列表以及答案项目列表。

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

我正在使用 SIlverlight 4.0。

4

2 回答 2

2

是的,您应该能够通过HeirarchicalDataTemplates.

您可以HeirarchicalDataTemplates为 ParentCluster、ChildCluster 创建一个,然后DataTemplate为问题使用一个法线。

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

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

如果你有一个基类'TreeItemBase',你的所有树视图模型都继承自,那么你就可以做你想做的事。

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

public class ParentClusterViewModel : TreeItemBase { ... }
public class ChildClusterViewModel : TreeItemBase { ... }
public class QuestionViewModel : TreeItemBase { ... }
于 2011-05-18T07:48:16.403 回答
1

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

于 2011-05-18T09:23:31.880 回答