#silverlight #events #panel #children
#silverlight #Мероприятия #панель #дочерние элементы
Вопрос:
Есть ли способ получить событие из Panel
при добавлении или удалении дочернего элемента? Я извлекаю данные из WrapPanel
банкомата.
Ответ №1:
Не существует общедоступного события или защищенного переопределения, которое отслеживало бы изменения Children
членства. Однако изменение принадлежности к Children
свойству в конечном итоге приведет к LayoutUpdated
событию.
Если вам просто нужно знать, были ли изменены элементы, то достаточно простой копии последнего подсчета дочерних элементов. Однако, если вам нужно отслеживать, какие элементы были добавлены или удалены, тогда вам придется сократить свою работу за вас, поддерживая теневую коллекцию, сравнивая коллекции и гарантируя, что вы не сохраняете записи, которые следует удалить из вашей теневой коллекции.
Имейте в виду, что LayoutUpdated
это может происходить довольно часто по разным другим причинам, поэтому любой код, который вы к нему прикрепляете, должен выполняться как можно быстрее. Поскольку любые изменения, которые вы можете внести в визуальное дерево, могут также вызвать другое LayoutUpdated
, необходимо соблюдать осторожность, чтобы избежать создания бесконечного цикла.
Комментарии:
1. Это было то, чего я боюсь, мне нужно отследить это, потому что я хочу, чтобы 1 вид был видимым.