2010-10-07 5 views
7

Quiero intentar algo diferente, y estoy intentando mostrar una superposición sobre mi GUI de WPF actual que permite al usuario interactuar aún con la GUI, pero proporciona una capa de molestia para hacerles saber que algo está pasando.Buscando una buena solución WPF para una superposición de clic transparente

Mi pregunta es en realidad dos cuestiones distintas:

1. ¿Cómo hacer la superposición?

Mi primer intento fue usar un Rectángulo, establecer el Relleno al color apropiado y luego cambiar la Opacidad. Pero no es transparente para los clics de destino. Así que creo que lo que quiero hacer, de acuerdo con los resultados de búsqueda, es crear una ventana separada, establecer su fondo en Transparente, y luego establecer AllowsTransparency en True. Mientras esto funciona, si quiero hacer algo como Background="DarkRed" Opacity="0.2", los clics ya no funcionan.

Y esto me lleva a la segunda parte:

2. ¿Cuál es la manera correcta de cambiar el tamaño de esta región de superposición si estoy usando MVVM?

Mi ventana principal crea ViewModel, que crea el Modelo. El modelo es lo único que sabe si se debe mostrar o no la superposición. Pero la ventana principal obviamente es lo único que conoce su tamaño, y el Modelo nunca sabe nada sobre eso. ¿Es la única forma de lograr esto para vincular el tamaño de la ventana de superposición a las propiedades en el modelo de vista y luego tener el modelo de vista establecido estos valores cada vez que cambia el tamaño de la ventana principal?

¿Alguien tiene pistas sobre cómo puedo lograr todas estas cosas?

Respuesta

14

Para abordar la parte 1: configure IsHitTestVisible="False" en su plantilla, ya sea un rectángulo, un borde o algún otro elemento. Esto le permitirá realizar cualquier color y nivel de transparencia que desee sin afectar la interacción con los controles subyacentes.

Parte 2: no debe usar una ventana separada. Si mantiene la superposición en la ventana principal, puede confiar en el diseño de su vista para manejar automáticamente el tamaño de la superposición.

+0

Sí, me gustó el enfoque Rectangle mejor, pero no pude entenderlo. HitTest no parecía ser lo correcto con lo que jugar, ¡pero lo probaré ahora! Gracias. – Dave

+0

Totalmente funciona. Mucho mejor que el enfoque de Window. ¡Gracias! Estoy amando IsHitTestVisible. :) – Dave

Cuestiones relacionadas