У меня есть TreeView
, содержащий HierarchicalDataTemplate
для показа его предметов.HierarchicalDataTemplate
заполнен панелью стека, которая содержит Image
и TextBlock
.
. Я использую древовидное представление в качестве иерархического навигационного меню.
Шаблон иерархических данных ItemsSource
связан с ObservableCollection
.Коллекция содержит экземпляры моего собственного класса NavMenuItem .
NavMenuItem не расширяет UserControl
или что-то еще.Это чистый класс C #.Класс имеет следующие свойства:
- SubItems - Коллекция дополнительных экземпляров NavMenuItem (пункты меню на уровне ниже).
- ViewName - строка, представляющая имя представления.
- IsActive - bool, True, когда «пункт меню» активен (пользователь находится в представлении, соответствующем пункту меню).
- Заголовок - строка, содержащая текст для заполнения
TextBlock
.
В HierarchicalDataTemplate
я просто связываю текст TextBlock
со свойством Title NavMenuItem .Это работает, как и должно быть.
Я также создал общий стиль в App.xaml, который определяет стиль и шаблон для любого TreeView
в целом.
Теперь я хочу как-то соединитьСвойство IsActive элемента NavMenuItem для свойства IsExpanded элемента управления TreeViewItem
в виде дерева.Таким образом, я могу изменить расширенное состояние пунктов меню из кода.
Как это можно сделать?
При использовании ItemContainerStyle
в TreeView
для манипулирования TreeViewItem
с. Это все равно будет Style
с TargetType TreeViewItem
.Фреймворк не будет знать о модели представления, которая принадлежит ему (NavMenuItem).Поэтому триггеры стилей могут использовать свойства только непосредственно из элемента управления TreeViewItem
.