HierarchicalDataTemplate для очень сложного макета

Я делаю травяную программу базы данных, и у меня возникают проблемы при настройке HierarchicalDataTemplates для моего основного класса данных.

Требуется макет дерева:

  • глоссарий
    • Категория1
      • Письмо (уменьшает общий размер списка)
        • запись
          • Note1
          • Заметка 2
  • травы

    • Ботаническое имя

      • По алфавиту
        • Письмо (уменьшает общий размер списка)
          • запись
      • По семье
        • семья
          • запись
    • Распространенное имя

      • Письмо (уменьшает общий размер списка)
        • запись

ПРИМЕЧАНИЕ. Все записи имеют примечания. ПРИМЕЧАНИЕ 2. Буква - это буква алфавита для сортировки.

Пример:

    • яблоко
  • б
    • автобус

Основной класс:

Public Class MainSystem
    Public herbs As New Dictionary(Of Integer, herbEntry)
    Public glossary As New Dictionary(Of Integer, glossaryEntry)
End Class

GlossaryEntry:

Public Class glossaryEntry
    Public Property ID As Integer
    Public Property Words As List(Of String) 'Each word is in the format: Catagory/word
    Public Property Notes As SortedDictionary(Of String, String)
End Class

HerbEntry:

Public Class herbEntry
    Public ID As Integer
    Public Property commonName As List(Of String)
    Public Property botanicalName As List(Of String)
    Public Property PlantID As PlantID
End Class

РЕДАКТИРОВАТЬ: Благодаря ссылке от @AngelWPF у меня есть дерево, отображающее мой объект. Но в настоящее время дерево выглядит так:

  • травы
    • Распространенное имя
      • CommonName элемент из записи
      • Еще один элемент CommonName из записи
    • Распространенное имя
      • CommonName элемент из записи
      • Еще один элемент CommonName из записи

Как я могу сделать это изменение, чтобы соответствовать моей иерархии?

XAML:

<UserControl.Resources>
        <HierarchicalDataTemplate  DataType="{x:Type my:herbEntry}">
            <TreeViewItem Header="Common Name"  ItemsSource="{Binding commonName}">

            </TreeViewItem>
        </HierarchicalDataTemplate>
    </UserControl.Resources>
    <Grid>
        <TreeView HorizontalAlignment="Stretch" Name="TreeView1" VerticalAlignment="Stretch">
            <TreeViewItem Header="Herbs" ItemsSource="{Binding herbs.Values}"/>
        </TreeView>
    </Grid>

1 ответ

Решение

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

Наличие HierarchicalDataTemplates в TreeView

Другие вопросы по тегам