Я хочу иметь возможность просматривать дерево визуального интерфейса в поисках элемента с идентификатором, связанным со свойством Tag визуального элемента.
Мне интересно, как я это делаю. У элементов управления нет детей для прохождения.
Я начал использовать LogicalTreeHelper.GetChildren, который, кажется, работает должным образом, до тех пор, пока я не нажму элемент управления TreeView ... затем LogicalTreeHelper.GetChildren не возвращает никаких дочерних элементов.
Примечание: цель состоит в том, чтобы найти элемент визуального интерфейса пользователя, который соответствует элементу данных. То есть, учитывая идентификатор элемента, найдите элемент UI, отображающий его.
Редактировать: Я, видимо, недостаточно хорошо объясняю это. Я связываю некоторые объекты данных с элементом управления TreeView, а затем хочу выбрать конкретный элемент программно, учитывая идентификатор этого бизнес-объекта. Я не понимаю, почему так сложно обойти визуальное дерево и найти нужный мне элемент, поскольку идентификатор объекта данных находится в свойстве Tag соответствующего визуального элемента. Я использую Mole, и я могу найти элемент пользовательского интерфейса с соответствующим идентификатором в его теге. Я просто не могу найти визуальный элемент в коде. LogicalTreeHelper не пересекает никакие элементы в дереве. ItemContainerGenerator.ContainerFromItem также не получает ничего для элементов в древовидном представлении.