Silverlight: получать событие при изменении дочерних элементов панели

#silverlight #events #panel #children

#silverlight #Мероприятия #панель #дочерние элементы

Вопрос:

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

Ответ №1:

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

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

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

Комментарии:

1. Это было то, чего я боюсь, мне нужно отследить это, потому что я хочу, чтобы 1 вид был видимым.