2

HierarchicalDataTemplate(s) を使用して複雑なデータ構造を WPF TreeView にバインドしようとしています。データのコレクションは、ViewModel に MyObject の IList として格納されています。MyObject にはいくつかのプロパティがあり、そのうちのいくつかは独自のリストです。

私が達成しようとしている出力は、次のようなものです。

+ MyObject 1 <br>
  + List1 <br>
    - List 1 Object 1 <br>
    - List 1 Object 2 <br>
  + List2 <br>
    - List 2 Object 1 <br>
    - List 2 Object 2 <br>
+ MyObject 2 <br>
  + List1 <br>
    - List 1 Object 1 <br>
    - List 1 Object 2 <br>
  + List2 <br>
    - List 2 Object 1 <br>
    - List 2 Object 2 <br>

ただし、いくつかの場所が機能しているのを見た複合コレクションを取得できないようです-

4

1 に答える 1

3

私はこれに似たようなことをしました。残念ながら、TreeViewItem はその ItemsSource に対して 1 つのコレクションしか受け入れないため、これを直接行うことはできません。

私がしたことは、TreeView が必要とする方法でコンテンツを公開するモデルを作成することでした。

public class MyObjectWrapper
{
  public MyObject Target {get;set;}
  public IEnumerable MyLists
  {
    get
    {
      yield return Target.List1;
      yield return Target.List2;
    } 
  }
}

MyObject は次のように定義されます。

public class MyObject
{
    public List1CollectionType List1 {get;private set;}
    public List2CollectionType List2 {get;private set;}
}

あなたのバインディングはその後です

  • TreeViewItem : MyObjectWrapper
    • ItemsSource : MyLists
    • TreeViewItem : List1CollectionType
      • ItemsSource : {Binding} (データコンテキストに直接バインド)
    • TreeViewItem : List2CollectionType
      • ItemsSource : {Binding}

MyObjectWrapper、List1CollectionType、および List2CollectionType の DataTemplate が必要です。

于 2010-12-06T14:02:22.613 に答える