Как привязать пользовательское свойство из общего стиля в WPF? - PullRequest
0 голосов
/ 30 января 2019

У меня есть 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.

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