Положение диалогового окна WPF - Set относительно главного окна?

Я просто создаю свой собственный AboutBox, и я называю его Окном использования. ShowDialog ()

Как я получаю его к позиции относительно главного окна, т.е. 20 пкс от вершины и центрируемый?

20
задан Zoe 7 September 2019 в 13:47
поделиться

1 ответ

Вы можете просто использовать свойства Window.Left и Window.Top . Прочтите их из главного окна и присвойте значения (плюс 20 пикселей или что-то еще) окну AboutBox перед вызовом метода ShowDialog () .

AboutBox dialog = new AboutBox();
dialog.Top = mainWindow.Top + 20;

Чтобы выровнять его по центру, вы также можете просто использовать свойство WindowStartupLocation . Установите для него значение WindowStartupLocation.CenterOwner

AboutBox dialog = new AboutBox();
dialog.Owner = Application.Current.MainWindow; // We must also set the owner for this to work.
dialog.WindowStartupLocation = WindowStartupLocation.CenterOwner;

. Если вы хотите, чтобы он был центрирован по горизонтали, но не по вертикали (т.е. фиксированное вертикальное положение), вам нужно будет сделать это в EventHandler после загрузки AboutBox, потому что вам понадобится для вычисления горизонтального положения в зависимости от ширины AboutBox, и это становится известно только после того, как он был загружен.

protected override void OnInitialized(...)
{
    this.Left = this.Owner.Left + (this.Owner.Width - this.ActualWidth) / 2;
    this.Top = this.Owner.Top + 20;
}

gehho.

40
ответ дан 29 November 2019 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: