Событие WPF для захвата новых элементов управления? - PullRequest
4 голосов
/ 17 февраля 2011

Мы используем ContentControl и другие контейнеры в WPF.Мне нужно уведомление с новым дочерним элементом управления добавляется в контейнер.Каков наилучший способ получить вновь созданный элемент управления в родительском?

Ответы [ 2 ]

3 голосов
/ 17 февраля 2011

ContentControl содержит только одного дочернего элемента, который присоединяется через свойство ContentControl.Content .Вы можете подключить ContentControl.OnContentChanged , чтобы узнать, когда обновляется значение этого свойства.

1 голос
/ 17 февраля 2011

Самый чистый способ - извлечь из этих элементов управления и переопределить методы, которые сообщают об изменениях, которые вас интересуют. Например, получить из ContentControl и реализовать OnContentChanged. Этот подход может вам не понравиться.

Если вы хотите обнаружить изменения в дочерних или дочерних элементах управления, не производя их, вы можете заметить, что такие изменения будут влиять на макет, и поэтому вы можете перехватить событие LayoutUpdated. Проблема с этим подходом заключается в том, что вам нужно отслеживать детей, которые были ранее добавлены самостоятельно, проверяя Child или Children в поисках изменений. Вы также должны быть осторожны, чтобы не зацепиться за ссылки на бывших детей, чтобы не вызвать утечку памяти. Но это можно сделать.

...