2010-08-03 9 views
17

He creado una aplicación de instancia única y quiero activar una ventana ya abierta si el usuario inicia la aplicación varias veces. Esto funciona bien, sin embargo, tengo el problema, que si la ventana ya abierta está más allá de otra ventana de aplicaciones, debo traerla al frente.¿Cómo llevar una ventana de WPF al frente?

He intentado window.Focus() y window.Show() pero ambos parecen no funcionar. Como una solución que uso ...

bool oldTopMost = window.Topmost; 
window.Topmost = true; 
window.Topmost = oldTopMost; 
window.Focus(); 

... esto hace el trabajo pero me parece muy feo. ¿Alguien tiene una mejor solución para esto?

Respuesta

30

Usted podría utilizar en lugar Window.Activate:

window.Activate(); 

Ésta es la equivelent WPF a llamar SetForegroundWindow.

+1

¡Perfecto! Gracias. – HCL

+1

Para restaurar la ventana si se minimizó, use: 'if (myWindow.WindowState == WindowState.Minimized) myWindow.WindowState = WindowState.Normal;' También conservará el estado Maximizado de la ventana, no revertirla a Normal. – r41n

Cuestiones relacionadas