HierarchicalDataTemplate для очень сложного макета
Я делаю травяную программу базы данных, и у меня возникают проблемы при настройке HierarchicalDataTemplates для моего основного класса данных.
Требуется макет дерева:
- глоссарий
- Категория1
- Письмо (уменьшает общий размер списка)
- запись
- Note1
- Заметка 2
- запись
- Письмо (уменьшает общий размер списка)
- Категория1
травы
Ботаническое имя
- По алфавиту
- Письмо (уменьшает общий размер списка)
- запись
- Письмо (уменьшает общий размер списка)
- По семье
- семья
- запись
- семья
- По алфавиту
Распространенное имя
- Письмо (уменьшает общий размер списка)
- запись
- Письмо (уменьшает общий размер списка)
ПРИМЕЧАНИЕ. Все записи имеют примечания. ПРИМЕЧАНИЕ 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 ответ
Решение
Этот пример может помочь вам назначить разные шаблоны элементов на разных уровнях для каждого типа связанного элемента...