Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Ibrahiem RafiqОтветов: 2

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

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

wpfsizewindowwidth

Ответы

Ответ 1 · Rune Grimstad

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

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

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

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

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

Ответ 2 · Ivan Leonenko

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы