2011-05-02 23 views
6

He hecho una pregunta antes sobre la creación de una ventana secundaria here ... Ahora cuando abro la ventana secundaria, no se abre centrada en la ventana primaria. ¿Cómo puedo configurarlo para que se abra centrado en la ventana principal?Posición de ventana de WPF

Respuesta

18

This solución funcionó bien para mí.

Este es un método que he encontrado para centrar una ventana en su ventana principal o principal para la aplicación, en WPF. No es muy diferente de cómo lo haces en WinForms.

Para la ventana secundaria, establezca su WindowStartupLocation en "CenterOwner". Esto hará que se muestre en el centro de la Ventana propietaria. Reducir

<Window x:Class="WpfApplication1.TestChild" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="TestChild" Height="300" Width="300" 
    WindowStartupLocation="CenterOwner"> 

Ahora, todo lo que queda por hacer es configurar su propietario antes de mostrarla. Si el código que está utilizando para mostrar la ventana se está ejecutando dentro de una clase de ventana, entonces puede usar esto. Reducir

TestChild testWindow = new TestChild(); 
testWindow.Owner = this; 
testWindow.Show(); 

Este no es siempre el caso, sin embargo; a veces, necesita mostrar la ventana secundaria del código que se ejecuta en una página o un control de usuario. En este caso, desea que la ventana secundaria se centre en la ventana principal de la aplicación. Reducir

TestChild testWindow = new TestChild(); 
testWindow.Owner = Application.Current.MainWindow; 
testWindow.Show(); 
+1

¿Puede poner un ejemplo de la solución dentro de su respuesta? Los enlaces externos están bien, pero idealmente el desbordamiento de la pila debería ser utilizable incluso si el resto de Internet desaparece. –

1

Puede probar esto:

AboutWindow window = new AboutWindow(); 
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; 
window.Owner = this; 

window.ShowDialog(); 
3

Trate this.

aboutWindow.WindowStartupLocation= WindowStartupLocation.CenterOwner ; 

aboutWindow.ShowDialog(this);