2

对于业务情景 - 组织具有不同的部门,每个部门都有不同的员工,分层数据模板完美地工作。TreeView项目 - 分层数据模板

如同问题纸(父集群)同时具有子集群(问题项目组)以及问题项目的情况怎么样。就像如下:

Bilogy(母集群)

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

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

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

我正在使用SIlverlight 4.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”你的所有树的ViewModels继承,那么你就可以做你想做的。

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

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

问题是,父CLuster也可以包含问题项目,甚至子集群可以包含子集群和问题项目。这里的问题是一个群集可以包含子群集列表以及问题项目列表。 – Chinjoo 2011-05-18 07:59:00

+0

更新我的答案,希望这应该适合你。 – 2011-05-18 09:25:57

+0

嗨..谢谢..我已经有了这个想法..提供的答案 – Chinjoo 2011-05-18 09:44:06

1

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

+0

+1这基本上是我这样做的,但使用WPF自动锻炼使用哪个DataTemplate而不是重写TemplateSelector。 – 2011-05-18 09:47:02