Вы можете просто использовать свойства 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.