Установить выделение для вновь добавленного элемента в WPF TreeView - PullRequest
2 голосов
/ 13 июля 2009

Я использую TreeView, чтобы позволить пользователю легче перемещаться по сложной структуре данных. Я пытаюсь добавить функцию в свое приложение, чтобы мои пользователи могли добавлять новые элементы в структуру данных, нажимая кнопку на панели инструментов. Этот новый предмет имеет 3 уровня, каждый с 1 предметом. Я хотел бы выбрать предмет на самом низком уровне.

Добавление данных не проблема, я просто добавляю новый элемент в коллекцию, который привязан к TreeView в конкретном случае. Я могу найти элемент вручную, просматривая TreeView, так что я знаю, что добавление работает. Теперь я хочу установить выбор нового элемента программно. Таким образом, пользователь может изменить настройки по умолчанию в элементе сразу.

Я провел некоторое тестирование и обнаружил, что настройка выбора выполняется с помощью чего-то вроде:

var obj = TreeView.ItemContainerGenerator
              .ContainerFromItem(selectedObject) as TreeViewItem;
obj.IsSelected = true;

Я пытался добавить этот код сразу после моего метода Add. Функция добавления возвращает новый объект и помещает его в selectedObject . Метод Add добавляет к ObservableCollection, что вызывает соответствующие события.

Но, obj всегда равен null сразу после добавления.

Я пытался установить выделение в событии LayoutUpdated, но в этом случае переменная obj из предыдущего кода всегда снова равна нулю.

Я думаю, что мне здесь чего-то не хватает. У кого-нибудь есть идея, как добавить новый элемент в ограниченную коллекцию и выбрать этот элемент в TreeView?

1 Ответ

2 голосов
/ 13 июля 2009

Возможно, вы захотите прочитать эту статью Джоша Смита об использовании дерева в WPF. Он демонстрирует, как использовать свойство IsSelected, которое можно легко адаптировать к вашим потребностям, используя шаблон MVVM.

...