2010-05-03 3 views
1

Добрый день. Я создаю настраиваемый элемент управления WPF, который должен опускать детей из процесса измерения/организации, если они не будут вписываться в доступную область. Я тестирую Blend.Создание пользовательской панели макетов WPF - игнорируемые дети не исчезают

Я попытался переопределить GetVisualChild (n) и VisualChildCount, чтобы попытаться разрешить среде выполнения только распознавать определенные элементы в качестве моих желаемых детей. Это похоже на работу, но большая проблема, которую я испытываю, такова:

Я бросаю некоторых детей в свой элемент управления макета из Blend. Затем я сжимаю элемент управления, когда некоторые дети не будут помещаться внутри моей панели. Проблема в том, что дети, которые больше не видны, остаются на поверхности дизайна Blend. Я попытался сделать недействительными их визуальные, вызвав «RemoveVisualChildI()» .. но ничто, кажется, не хочет, чтобы визуализированные визуальные изображения исчезли.

Взаимодействие с методом GetViasualChild (...), я являюсь свидетелем Blend, и среда выполнения запрашивает только реальных видимых детей (полностью содержащихся внутри моей панели макета). Таким образом, мне кажется, что проблема связана с дочерними элементами, которые думают, что их все равно нужно визуализировать ... или что панель контейнера просто не знает, что она нуждается в повторном рендеринге.

Любые подсказки? Я могу попытаться предоставить более подробную информацию, если это необходимо, но моей основной потребностью является возможность выборочно скрывать/показывать (опустить из процесса измерения/организации) определенные дочерние элементы пользовательской панели.

Спасибо! - Шон

ответ

1

Поскольку никто не ответил, я решил, что поделюсь решением. Визуальное дерево устанавливается с помощью метода AddVisualChild (...) в базовом классе Visual. Группа заботится об этом для вас с помощью коллекции «Дети». Чтобы решить эту проблему, все, что мне нужно было сделать, это создать экземпляр UIElementCollection и позволить ему выполнять грязную работу. Когда этот класс создается, он передается визуальным родителем и необязательным логическим родителем. Когда элементы добавляются в эту коллекцию, отношения родителя/ребенка устанавливаются автоматически.

Надеюсь, это поможет следующему человеку!

Смежные вопросы