TreeView с использованием иерархических шаблонов данных, привязка к различным коллекциям - PullRequest
1 голос
/ 17 февраля 2010

Я использую TreeView с Иерархическим шаблоном данных для привязки к иерархии модели представления, моя проблема в том, что у меня есть несколько дочерних коллекций разных типов (хотя один базовый класс) Кажется относительно простым в использовании шаблона для связывания одной из коллекций, но я изо всех сил пытаюсь решить, как сделать обе.

class ParentViewModel 
{ 
  List<FooViewModel> FooCollection {get; set;}
  List<BarViewModel> BarCollection {get; set;}
}

Это то, чего я пытаюсь достичь, но мне было интересно, есть ли простой способ сделать это:

http://www.codeplex.com/ComplexDataTemplates

Ответы [ 2 ]

2 голосов
/ 17 февраля 2010

Нет никакого способа, о котором я знаю.Когда мне нужно было это сделать, я добавил в ViewModel еще одно свойство, называемое «Дети», которое объединяет две коллекции в одну:

public IEnumerable<ViewModel> Children
{
    get
    {
        foreach (FooViewModel foo in FooCollection) yield return foo;
        foreach (BarViewModel bar in FooCollection) yield return bar;
    }
}
0 голосов
/ 25 февраля 2010

Если ваши разные коллекции находятся только в корневом узле, вы можете просто добавить несколько древовидных представлений и привязать каждый корень к другой коллекции.

Альтернативно, вы можете просто добавить несколько древовидных представлений в шаблон иерархической структуры и указать индивидуальные привязки для каждого древовидного представления.

Я не уверен, поможет ли это вашей конкретной ситуации, но лично я использую древовидную структуру для системы меню, которая связывает все варианты меню.

...