WPF - Как определить, когда добавляются новые дочерние элементы Visual?

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

Это прекрасно работает. На 99% идеально.

В моем окне есть ItemsControl, содержимое которого основано на ComboBox. Измените ComboBox, дочерние элементы управления ItemsControl снова будут привязаны к данным. Но тогда безопасность (только для чтения / отключена) больше не работает.

Прежде чем перейти к решению, я знаю, что могу обработать событие изменения ComboBox; но у меня есть много таких ящиков, и я не могу применить общее решение на уровне окна (думаю: база), независимо от того, что мои разработчики добавляют в окно / форму.

Мой вопрос (извините за долгий ввод) есть, как я могу определить, когда новый дочерний элемент добавлен в окно из-за некоторой динамической активности, такой как привязка данных? Есть ли событие NewChildAdded? Есть ли событие DataBindingJustChangedThings?

Что-то должно быть.

Если ваше решение включает таймер, вам не нужно отвечать. Мои формы слишком сложны, чтобы справиться с этой дополнительной нагрузкой, а задержка между тиками слишком реальна для безопасности.

Вы могли подумать, просто сделайте внешний контейнер доступным только для чтения или отключите. Но это отрицательно сказывается на таких вещах, как расширители, многострочные текстовые поля и списки. Такой подход недостаточно зернистый. Конечно, именно здесь мы начали итерации назад.

Если ваше решение включает стиль, вам нужно указать, как я могу переопределить ваш подход для каждого элемента управления. Некоторые элементы управления (например, флажок) нельзя отключить, поскольку они имеют определенное назначение в макете пользовательского интерфейса.

Извините за ограничения, но я планирую использовать решение в производственной среде.

Спасибо.

7
задан Dave Clemmer 14 May 2013 в 14:46
поделиться