2016-08-21 4 views
1

wpfでバインディングを使用してツリービューを作成したいだけです。私はルートとしてクラス(ClassRoot)を有しており、Iは3種類ClassAのルートクラスのプロパティ、ClassB、以下のようなClassCバインディングによるマルチレベルWPFツリービュー

class ClassRoot 
{ 
    public ClassA propClassA { get; set; } 
    public ClassB propClassB { get; set; } 
    public ClassC propClassC { get; set; } 
} 

独自の特性を有する各クラスを有しています。それはまた、同様の構造を有する以下のような、

class ClassA 
{ 
    public string Name { get; set; } 

    //Here ListOfValues is an enum 
    public ListOfValues listValues { get; set; } 

    public List<string> stringValues { get; set; } 
} 
上記クラス等

ClassBClassCなど型List又はEnum、の特性を有することができます。私は、次の、

  • ClassRoot
    • にClassA
      • 名前
      • listValues
      • stringValues
    • ClassBの のようなWPFのツリービューでこれを表示したいです
      • listValues
      • stringValues

各プロパティを編集可能であるべきであるが、タイプList又はEnumの特性は、ツリービューでComboBoxとして表されるべきです。 階層データテンプレートを使用できますが、この複数レベルの階層を実装するのは混乱しています。 これをどのように進めることができますか?

答えて

1

使用HierarchicalDataTemplate

<HierarchicalDataTemplate DataType = "{x:Type src:ClassRoot}" 
           ItemsSource = "{Binding Path=Divisions}"> 
     <TextBlock Text="{Binding Path=Name}"/> 
    </HierarchicalDataTemplate> 

    <HierarchicalDataTemplate DataType = "{x:Type src:ClassA}" 
           ItemsSource = "{Binding Path=Teams}"> 
     <TextBlock Text="{Binding Path=Name}"/> 
    </HierarchicalDataTemplate> 

    <HierarchicalDataTemplate DataType = "{x:Type src:ClassB}" 
           ItemsSource = "{Binding Path=Teams}"> 
     <TextBlock Text="{Binding Path=Name}"/> 
    </HierarchicalDataTemplate> 
+0

こんにちはのCodeDOMをありがとう、あなたの答えをありがとうございました。私はHierarchicalDataTemplateの使用に問題はありません、私はツリービューでクラス階層を表示することができますが、私はまたそのノードの下にClassAのプロパティを表示したい。私はClassAのすべてのプロパティのラベルを含むテンプレートを試した、それは1つのノードとしてすべてのプロパティを表示します、私はClassAノードの下に別々のノードとして、またそれを編集可能にする必要があります、これは私の問題です... –