WPF - LayoutUpdated событие запускается повторно

Я добавил немного анимации в мое приложение WPF.

БлагодаряДан Кревьеуникальное решение для анимации детей панели в сочетании спотрясающая анимация WPF Penner оказалось довольно просто сделать один из моих элементов управления великолепным и заставить его детей двигаться с хорошей анимацией.

К сожалению, все это связано с потерей производительности. Я'я рад, что производительность была увеличена при добавлении / удалении элементов или изменении размера элемента управления, но кажется, что этот эффект происходит последовательно во всем приложении »Срок службы, даже когда элементы полностью статичны.

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

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

Итак, мой вопрос, как я могу улучшить производительность здесь? Любой ответ, который помогает, будет оценен, но яВ настоящее время я застрял в этих подвопросах:

Что вызываетLayoutUpdated событие, чтобы стрелять так часто? Это должно произойти, и если нет, то как я могу узнать, почему это так?уволить и свернуть?

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

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

Ответы на вопрос(1)

Ваш ответ на вопрос