2

シナリオ - 異なる部門を持つ組織、各部門に異なる従業員がいる場合、階層データ テンプレートは完全に機能します。

質問用紙 (親クラスター) のようなシナリオで、子クラスター (質問アイテム グループ) と質問アイテムの両方がある場合はどうでしょうか。次のように:

生物学 (親クラスター)

  • グループ 1 (子クラスター)
    • 設問1(設問項目)
    • 設問2(設問項目)
  • グループ 2 (子クラスター)
    • サブグループ 1 (子クラスター)
    • 設問1(設問項目)
    • 設問2(設問項目)

ここには、クラスターと質問アイテムの 2 つのエンティティがあります。クラスターには、クラスターのリストと回答項目のリストを含めることができます。

基本的に問題は、クラスターの同じ階層データ テンプレートが、子クラスター用と質問アイテム用の 2 つのアイテム ソースにバインドする必要があるためです。この場合、ツリー ビューを使用できるように、階層データ テンプレートを使用する方法はありますか。

シルバーライト4.0を使用しています。

4

2 に答える 2

2

はい、でそれを達成できるはずですHeirarchicalDataTemplates

HeirarchicalDataTemplatesParentCluster、ChildClusterの を作成してDataTemplateから、質問に法線を使用することができます。

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

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

次に、すべてのツリー ViewModel が継承する基本クラス '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 に抽象化し、クラスター内の WorkItem のコレクションを使用しました。これは、QuestionItems とサブクラスターの結合リストを返します。TemplateSelector オーバーライドされた SelectTemplate で、作業項目の種類に基づいて階層データ テンプレート/データ テンプレートを提供します。

于 2011-05-18T09:23:31.880 に答える