У меня есть связанный, иерархический TreeView
. В зависимости от характера базовых данных, один и тот же объект может появляться в дереве несколько раз:
A
--A1
---A11
--A2
B
--B1
--A1 <<< A1 is a node under both A and B
---A11 <<< A11 also shows up twice since it is a child of A1
Обратите внимание, что, хотя в моем примере я показал 3 уровня, реальные данные могут иметь неограниченное количество уровней. И один и тот же объект может отображаться на нескольких уровнях. Мой TreeView
с HierarchicalDataTemplate
показывает это прекрасно.
Поскольку A1 может появляться в нескольких местах, я хочу выделить это для пользователей, чтобы они знали, что редактирование A1 повлияет не только на ветвь A, но и на ветвь B.
Обратите внимание, что цель состоит в том, чтобы просто выделить другой A1, а не изменить выбор.
Единственное решение, к которому я пришел, - это иметь свойство IsHighlighted
в базовом классе для объектов. Когда выбран A1, я изменяю значение IsHighlighted
с помощью обработчика SelctedItemChanged
. IsHighlighted
, в свою очередь, связан со свойством TreeViewItem
Background
через конвертер, и обновление графического интерфейса пользователя инициируется уведомлением об изменении свойства.
Проблема, связанная с этим методом, заключается в том, что в моей модели теперь есть свойство, управляемое исключительно пользовательским интерфейсом. Хотя я не следую строгому соблюдению MVVM, я хотел бы, по крайней мере, сохранить эту модель немного более изолированной.
Каков рекомендуемый способ реализации этого?