Позиционирование второго окна WPF

У меня есть MainWindow, у которого есть кнопка, позволяющая открыть другое окно WPF. Я хочу, чтобы это окно всегда открывалось справа от MainWindow практически рядом с ним.

Как я могу это сделать? Это должно работать, даже если ширина MainWindow изменяется, поскольку у меня есть различные кнопки в MainWindow, которые могут изменять размер MainWindow в зависимости от того, какая панель видна.


person Ibrahiem Rafiq    schedule 30.08.2012    source источник


Ответы (2)


Вы можете рассчитать, где вы хотите новое окно, если у вас есть ссылка на другое окно.

Получите положение других окон, обратившись к свойствам Left и Top, а также его ширину, обратившись к свойству ActualWidth или Width.

Теперь вы можете рассчитать положение нового окна, добавив Left + Width + Some spacing.

Ознакомьтесь с документацией по свойству Left здесь: http://msdn.microsoft.com/en-us/library/system.windows.window.left.aspx

Остальные ведут себя аналогично.

person Rune Grimstad    schedule 30.08.2012

Вам нужно установить место запуска вручную для второго окна в свойствах или в коде:

WindowStartupLocation = WindowStartupLocation.Manual;

В событиях Loaded, SizeChanged, LocationChanged первого окна вы должны настроить положение второго окна следующим образом:

    public void AdjustPosition()
    {
        window2.Left = Application.Current.MainWindow.Left + Application.Current.MainWindow.ActualWidth;
        window2.Top = Application.Current.MainWindow.Top;
    }

    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
            AdjustPosition();
    }

    private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e)
    {
           AdjustPosition();
    }

    void MainWindow_LocationChanged(object sender, EventArgs e)
    {
           AdjustPosition();
    }
person Ivan Leonenko    schedule 30.08.2012