2016-05-25 8 views
0

I benutzen:Platz einer WPF Fenster neben anderen

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; 

das erste Fenster (W1) in der Mitte des Bildschirms zu positionieren.

Mit einem Knopf klicken möchte ich ein neues Fenster (W2) neben dem ersten platzieren.

Image showing how it should be (W=Window)

+0

Als einen kurzen Blick scheint es nur eine Frage der grundlegenden Berechnung plus minus. Versuchen Sie, die Werte der Position von FirstWindow und Breite, Höhe zu erhalten (durch FirstWindow.Width und FirstWindow.Height). Nach einer einfachen Berechnung stellen Sie die berechneten Werte in secondWindow.Left und secondWindow.Top so ein. –

Antwort

1

Der folgende Code die Arbeit machen sollte:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Window2 w2 = new Window2(); 
    w2.WindowStartupLocation = WindowStartupLocation.Manual; 
    w2.Left = this.Left + this.Width; 
    w2.Top = this.Top + (this.Height - w2.Height)/2; 
    w2.Show(); 
} 

Wenn Sie das zweite Fenster wollen Änderungen verfolgen, um die Größe und die Position des ersten, dann müssen Sie würde die entsprechende Handhabung Ereignisse und korrigieren Sie die Position des zweiten Fensters mit ähnlicher Logik wie oben.

+0

Sie können ActualWidth und ActualHeight verwenden, um DPI-Anpassungen und Messungen zu berücksichtigen. – Matt

+0

Danke @BenJackson, das hat perfekt funktioniert :) –