2011-07-09 24 views
5

Quiero configurar un evento para que se ejecute cuando se cambie la visibilidad en un control de WPF Canvas.WPF canvas Evento VisibilityChanged

canvas1.VisibileChanged += new EventHandler(canvas1_VisibleChanged); 

He intentado lo anterior pero no funciona ¿alguien sabe cómo hacerlo?

Saludos

+1

Es 'VisibleChanged', no' VisibileChanged'. ¿Eso es un error tipográfico en tu código o en la pregunta? – keyboardP

+0

Si estuviera en el código, me imagino que el compilador se habría dado cuenta (suponiendo que OP haya intentado compilar al menos una vez. Aunque decir "esto no funciona" implica que se ha compilado * y * ejecutado) – dlev

+0

Eso es cierto, pero He visto preguntas en las que "esto no funciona" se refiere a la falla de compilación. – keyboardP

Respuesta

19

UIElement.IsVisibleChanged

Usted está buscando el evento IsVisibleChanged, que se aplica a TODAS UiElements.


Más información: IsVisible es una propiedad de Dependencia de solo lectura. Es un valor calculado, y la Propiedad de Dependencia de Visibilidad lo afecta. Esto es lo que debe usar para detectar si su UIElement es visible o no. Ahora, si realmente quieres comprobar si el DP de visibilidad cambia por alguna razón, hay una manera de hacerlo: http://agsmith.wordpress.com/2008/04/07/propertydescriptor-addvaluechanged-alternative/

Aunque, todavía me quedaré con el seguimiento del IsVisibleChanged.

2

El objeto normales Lienzo WPF no tiene un evento .VisibleChanged, por lo que no puede asignar un controlador de eventos a la misma.

+0

Cualquier UIElement tiene un evento que se activa cuando cambia la visibilidad. –