Как связать TreeView иерархически с помощью значений перечисления в WPF - PullRequest
1 голос
/ 18 сентября 2011

Хорошо, поэтому я не уверен, что это даже возможно, но я задам вопрос здесь и надеюсь получить ответ на него.

Предположим, у меня есть список класса, скажем, элементы Media, определенные следующим образом

Enum MediaItemType{
  Book,
  CD,
  VideoGame
}

public MediaItem{
  public string Name { get; set; }
  public MediaItemType { get; set; }
}

Теперь предположим, что я хочу связать список MediaItems с TreeView так, чтобы каждый MediaItem заканчивалсяотдельное поддерево в зависимости от типа элемента мультимедиа.Можно ли это сделать, и если да, то как мне это сделать?

В моем Xaml-коде я предполагаю, что в контексте я определил список как свойство с именем MediaItems.

<Grid>
   <TreeView ItemsSource="{Binding Path=MediaItems}">
</Grid>

Вид дерева должен выглядеть примерно так

Book
  - In to the wild
  - Code Complete
CD
  - Foo Fighters
  - Bach
DVD
  - X-men
  - Casino Royale

Ответы [ 2 ]

1 голос
/ 18 сентября 2011

Не вижу проблем. В модели у вас есть MediaItem, в представлении модели вы должны иметь тип MediaItemView, что-то вроде этого:

public class MediaItemView
{
    public MediaItemType { get; set; }
    public List<MediaItem> medialist;
}

Определите привязки для этого класса и определите Converter, который преобразует значение enum в его представление string.

0 голосов
/ 18 сентября 2011

Я не знаю о древовидном представлении, но вы могли бы достичь чего-то похожего на то, что вы описываете, используя группировку GroupDescription для свойства MediaItemType с ListBox или ListView, как описано здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...