2009-03-26 10 views
5

Tengo un panel personalizado que al cambiar el tamaño tiene su evento LayoutUpdated y ArrangeOverride llamado dos veces.¿Determinar qué causó LayoutUpdate/ArrangeOverride?

Inicialmente MeasureOverride y ArrangeOverride hacen lo suyo una vez que abren la ventana del cliente. Luego, si maximizo la ventana, cada uno se llama dos veces. Los tamaños disponibles y final respectivamente no son diferentes entre cada iteración, así que no estoy seguro de qué está iniciando esto.

¿Hay alguna manera de determinar la causa de la invalidación?

+0

Tengo un problema que tiene que ser una pregunta similar: http://stackoverflow.com/questions/1577240/wpf-layoutupdated-event-firing-repeatedly –

Respuesta

6

Creo que se llama dos veces porque la altura y el ancho cambian. Creo que ambas propiedades afectan a Measure y, por lo tanto, hay un pase de diseño para cada una.

0

Diría que la manera más fácil es establecer un punto de interrupción para cada método y observar la pila de llamadas. Podrá ver lo que sucedió antes de que se llamara su método.

+6

No voy a obtener un seguimiento de pila para lo que invalida el control. –

3

¿Hay alguna manera de determinar la causa de la invalidación?

invalidación por lo general es causada por un cambio de una propiedad de dependencia que, entre Es FrameworkPropertyMetadataOptions tiene banderas AffectsMeasure/AffectsOverride.

Como ya dijo Pavel, es probable que la invalidación se active para ambos cambios en Ancho y Alto.

De todos modos, no debe confiar en el número de esas invalidaciones.

Cuestiones relacionadas