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