C# WPF: las ventanas propias no se minimizan correctamente

Resuelto CookieGod24 asked hace 9 meses • 0 respuestas

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.Ownerpropiedad).

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 StateChangedel evento de B no se activa. En consecuencia, esto me impide minimizar manualmente la ventana C manejándola en el StateChangedevento de la ventana B.

Actualmente no sé qué debo hacer para lograr el comportamiento deseado.

Intenté alterar la ResizeModepropiedad de Windows configurando las ventanas B y C en ResizeMode.CanMinimize, sin embargo, persistió el mismo comportamiento erróneo.

CookieGod24 avatar Feb 16 '24 03:02 CookieGod24
Aceptado

Actualizar

Descubrí que cuando se minimiza una ventana de WPF en lugar de minimizar sus ventanas secundarias, las establece Visibilityen falso. Esto fue bastante confuso porque no se indica en los documentos .

Mitigué el problema que enfrenté suscribiéndome al IsVisibleChangedevento 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;
};
CookieGod24 avatar Feb 15 '2024 23:02 CookieGod24