2016-05-25 3 views
0

Я использовал это:Place один WPF окно рядом с другим

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; 

в положение первого окна (W1) в середине экрана.

При нажатии на кнопку, я хочу поместить новое окно (W2) рядом с первым.

Image showing how it should be (W=Window)

+0

Как быстрый взгляд, это просто вопрос базового расчета плюс минус. Попытайтесь получить значения местоположения firstWindow и width, height. (Через firstWindow.Width и firstWindow.Height). И после простого вычисления, установите вычисленные значения в secondWindow.Left и secondWindow.Top что-то вроде. –

ответ

1

Следующий код должен делать эту работу:

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(); 
} 

Если вы хотите, второе окно для отслеживания изменений в размер и позицию первого, то вы должны обращаться с соответствующим событиях и исправить положение второго окна, используя аналогичную логику для вышеуказанного.

+0

Вы можете использовать ActualWidth и ActualHeight для учета корректировок и измерений DPI. – Matt

+0

Спасибо @BenJackson, который отлично работал :) –

Смежные вопросы