WPF TreeView, Entity Framework и HierarchicalDataTemplate с вложенными дочерними списками - PullRequest
2 голосов
/ 06 декабря 2010

Я пытаюсь связать сложную структуру данных с WPF TreeView, используя HierarchicalDataTemplate (s). Коллекции данных хранятся в моей ViewModel как IList MyObject - 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>

Однако мне кажется, что я не могу получить составную коллекцию, в которой упоминалось о нескольких местах работы -

1 Ответ

3 голосов
/ 06 декабря 2010

Я только что сделал что-то похожее на это. К сожалению, вы не можете сделать это напрямую, поскольку TreeViewItem принимает только одну коллекцию для своего ItemsSource.

Я создал модель, которая отображает содержимое в соответствии с требованиями 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}

Вам понадобится DataTemplate для MyObjectWrapper, List1CollectionType и List2CollectionType.

...