C# WPF: las ventanas propias no se minimizan correctamente
Estoy en el proceso de escribir una aplicación WPF y tengo 3 ventanas A, B y C. A es dueño de B y B es dueño de C (mediante la configuración de la Window.Owner
propiedad).
Comportamiento esperado:
- Cuando B se minimiza, C también se minimiza. (Funciona como se esperaba)
- Cuando A se minimiza, B también se minimiza. (Funciona como se esperaba)
- Cuando A se minimiza, C también se minimiza. (No funciona como se esperaba)
El problema surge cuando la ventana C está activa. Si A se minimiza mientras C está activo, B también se minimiza pero C no. Por lo demás funciona correctamente.
Estoy minimizando la ventana A mediante programación configurando WindowA.WindowState = WindowState.Minimized
. Y a primera vista, esto parece minimizar la ventana de su propiedad B, pero StateChanged
el evento de B no se activa. En consecuencia, esto me impide minimizar manualmente la ventana C manejándola en el StateChanged
evento de la ventana B.
Actualmente no sé qué debo hacer para lograr el comportamiento deseado.
Intenté alterar la ResizeMode
propiedad de Windows configurando las ventanas B y C en ResizeMode.CanMinimize
, sin embargo, persistió el mismo comportamiento erróneo.
Actualizar
Descubrí que cuando se minimiza una ventana de WPF en lugar de minimizar sus ventanas secundarias, las establece Visibility
en falso. Esto fue bastante confuso porque no se indica en los documentos .
Mitigué el problema que enfrenté suscribiéndome al IsVisibleChanged
evento de la ventana B y configurando la visibilidad de la ventana C para que fuera igual a la de la ventana B.
windowB.IsVisibleChanged += delegate
{
windowC.Visibility = windowB.Visibility;
};