Tengo un control WPF Popup
que contiene algunos controles de edición (cuadros de lista, cuadros de texto, casillas de verificación) dispuestos con bastante espacio en blanco.¿Por qué se cierra una ventana emergente WPF cuando se hace clic en su área de fondo?
Popup.StaysOpen
se establece en False
, que es obligatorio. Si el usuario hace clic en otra parte de la aplicación, la operación de edición debería considerarse abortada y la ventana emergente debería cerrarse.
Lamentablemente, la ventana emergente también se cierra cada vez que el usuario hace clic dentro de la región de fondo de la ventana emergente (el espacio entre los controles de edición).
He intentado configurar la ventana emergente para que sea Focusable
. También intenté configurar el elemento secundario de la ventana emergente (un Border
) para que se pueda enfocar. Sin suerte en ninguno de los frentes.
Además, el evento del mouse parece pasar por la ventana emergente. Cualquier elemento que se encuentre debajo de la ventana emergente cuando haga clic en él se enfoca. Esto a pesar de que tanto el Popup
como el Border
(en el que estoy haciendo clic) tienen IsHitTestVisible
y Focusable
establecidos en true
.
+1 ¡muy bonito y elegante! –
¡Gran solución! Incluso pude hacerlo con un control definido en Generic.xaml, usando EventToCommand, pasando los EventArgs al comando y luego configurando Handled = True. ¡Gracias! – Dror
Otra forma de colar el controlador par en un punto complicado es derivar una clase 'ArmouredPopup' que se deriva de' Popup'. Puede anular 'OnMouseDown'. Considero que esto es un error en la clase emergente predeterminada. –