Определите, что послужило причиной возникновения LayoutUpdate / ArrangeOverride? - PullRequest
5 голосов
/ 26 марта 2009

У меня есть пользовательская панель, которая после изменения размера имеет событие LayoutUpdated и ArrangeOverride, вызываемый дважды.

Итак, изначально MeasureOverride и ArrangeOverride делают свое дело один раз при открытии окна клиента. Затем, если я максимизирую окно, каждое из них вызывается дважды. Доступный и окончательный размеры соответственно не различаются для каждой итерации, поэтому я не уверен, что это инициирует.

Есть ли способ определить причину недействительности?

Ответы [ 3 ]

6 голосов
/ 21 октября 2009

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

3 голосов
/ 03 ноября 2009

Есть ли способ определить причину недействительности?

Недействительность обычно вызвана изменением свойства DependencyProperty, которое среди своих FrameworkPropertyMetadataOptions имеет флаги AffectsMeasure / AffectsOverride.

Как уже сказал Павел - вполне вероятно, что аннулирование срабатывает как для изменения ширины, так и высоты.

Во всяком случае, вы не должны полагаться на количество этих недействительности.

0 голосов
/ 26 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...