WPF Treeview, репозитории, иерархические данные и новичок WPF - PullRequest
0 голосов
/ 05 ноября 2010

Позвольте мне начать с того, что я раньше не использовал WPF или Silverlight в гневе, мой единственный пример, кроме просмотра простых учебных пособий еще в 2009 году ...

Что я пытаюсь сделатьотображает древовидную структуру, содержащую на корневом уровне класс DataStoreType, и под ними они связаны DataStoreEntry классы ... но загружаются по требованию.

Сами классы выглядят примерно так:

public class DataStoreType
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

public class DataStoreEntry
{
    public int Id { get; set; }
    public int TypeId { get; set; } // Link back to the parent DataStoreType
    public string Name { get; set; }
    public DateTime Imported { get; set; }
    public DateTime? AvailableFrom { get; set; }
    public string Description { get; set; }
}

Предметы поступают из ряда хранилищ, они не находятся ни в какой дочерней коллекции самих объектов, поэтому в этих хранилищах должны быть сделаны вызовы для их получения.

В идеале, я бы тоже хотел разобраться с использованием шаблона MVVM ... но любая помощь / примеры будут высоко оценены!

Спасибо,Кирон

Ответы [ 2 ]

3 голосов
/ 08 ноября 2010

Здесь был найден идеальный учебник / пример для моих нужд.

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

Модели с закрытым просмотром и загрузка по запросу.

2 голосов
/ 05 ноября 2010

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

<TreeView ItemsSource="{Binding DataStoreTypes}">
  <TreeView.Resources>
    <HierarchicalDataTemplate
      DataType="{x:Type DataStoreType}"
      ItemsSource="{Binding Converter={StaticResource TypeToEntriesConverter}}">
      <TextBlock Text="{Binding}"/>
    </HierarchicalDataTemplate>
    <DataTemplate
      DataType="{x:Type DataStoreEntry}">
      <TextBlock Text="{Binding}"/>
    </DataTemplate>
  </TreeView.Resources>
</TreeView>

Теперь все, что вам нужно сделать, - это реализовать IValueConverter, который преобразует DataStoreType в IEnumerable<DataStoreEntry> анположить его в ресурсы под именем TypeToEntriesConverter .

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