que tienen la siguiente sencilla aplicación WPF:¿Por qué el cierre de la última ventana secundaria minimiza su ventana principal?
App.xaml:
<Application x:Class="TestWpf2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Application>
App.xaml.cs:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
var parentWindow = new Window();
parentWindow.Show();
var childWindow1 = new Window { Owner = parentWindow };
childWindow1.Show();
var childWindow2 = new Window { Owner = parentWindow };
childWindow2.Show();
}
}
La aplicación hace 3 ventanas a aparecer en la pantalla. Si ejecuta la aplicación y cierra las dos ventanas secundarias, la ventana principal se minimiza a la barra de tareas. Si comenta childWindow2.show()
, ejecuta la aplicación y cierra la ventana secundaria única, la ventana primaria no se minimiza en la barra de tareas.
puedo añadir el siguiente código para evitar este problema:
childWindow1.Closing += delegate(object sender, CancelEventArgs ex)
{
(sender as Window).Owner = null;
};
pero yo no desee utilizar un truco como este, y quiero entender por qué se produce este problema.
¿Por qué sucede esto?
No se minimiza, simplemente pierde el foco y se esconde detrás de otra ventana. Como la ventana principal de Visual Studio. Agregar ShowActivated = false al inicializador de ventana hijo es una forma de solucionarlo. –
@HansPassant ShowActivated solo evita que las ventanas secundarias se activen cuando se crean. Si el usuario hace clic en ellos para activarlos, luego los cierra, la ventana principal aún pierde el foco. – Oliver
https://connect.microsoft.com/VisualStudio/feedback/details/523197/modal-dialog-on-top-of-non-modal-window-sends-main-window-to-back –