2011-05-10 8 views
5

Supongamos que tengo una ventana con un UserControl personalizado, y UserControl tiene un cuadro de texto adentro. Cuando arrastro la ventana, ¿cómo puede el TextBox detectar que se está moviendo?¿Cómo detectar que se está moviendo un control?

He intentado buscar en su propiedad RenderTransform, hay ese evento Change que se activa cuando "el objeto Freezable o uno de sus objetos cambia". Nada concluyente ..

Editar:

En mi caso, no veo la ventana, todo lo que veo es el control de usuario y no puede ir más arriba.

Respuesta

6

Tendrá que suscribirse a los eventos de Ventana, ya que su cuadro de texto no se está moviendo realmente (lo más probable es que esté en la misma posición relevante para la ventana) para suscribirse al evento Window.LocationChanged que se notificará cuando se mueva la ventana .

Pero también Si su control no tiene una posición absoluta, entonces tendrá que analizar Window.SizeChanged que le dirá cuando el usuario cambió el tamaño de la ventana, pero es un evento final discreto en comparación con un evento en curso.

+0

Gracias. Pero eso no funciona en mi caso porque en realidad el cuadro de texto está dentro de un UserControl, que está dentro de una ventana sticky mdi. Desde mi código no puedo ver el mdi así que no puedo hacer nada basado en eso. Dije que tenía una ventana solo para simplificar el caso. Lo que tengo que hacer es abordar este caso de manera diferente. No debe ser un marco que dispare un evento y le diga a todos que han sido movidos. El cuadro de texto debe detectar que su ubicación ha cambiado, por sí misma. – Mohamed

+0

Esto tampoco funcionará para aplicaciones que usan controles de arrastrar y soltar ... que es el problema que tengo. –

2

Intente suscribirse al evento LayoutUpdated de UserControl.

+0

Este es un buen consejo. Al usar LayoutUpdated, asegúrese de verificar si el control se ha movido antes de realizar un trabajo costoso. El evento LayoutUpdated se activa para más cambios de posición. Si animas algo sobre el control, el evento LayoutUpdated tiende a disparar MUCHO. –

Cuestiones relacionadas