Silverlight: получить событие при изменении дочерних элементов панели - PullRequest
1 голос
/ 02 мая 2011

Есть ли способ получить событие из Panel при добавлении или удалении ребенка?Я получаю от WrapPanel атм.

1 Ответ

2 голосов
/ 02 мая 2011

Нет открытого события или защищенного переопределения, которое отслеживает изменения Children членство.Однако изменение членства в свойстве Children в конечном итоге приведет к событию LayoutUpdated.

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

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

...