Могу ли я найти логических детей по типу

Я знаю, что могу использовать LogicalTreeHelper класс для поиска дочернего узла для каждого элемента, ищущего его по имени. Но есть ли возможность найти дочерний узел по Типу? Например, что, если я хочу найти элемент ListBox в моем окне, не зная его свойства Name?

Ответов (2)

Решение

Я не думаю, что для этого есть какой-то встроенный способ. Вероятно, лучшим подходом будет рекурсивный вызов, LogicalTreeHelper.GetChildren() пока не будет найден дочерний элемент управления указанного типа.

Обратите внимание, что чистый спуск по логическому дереву на самом деле немного сложен, вот хорошая статья о тонкостях как визуальных, так и логических деревьев.

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