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