解决方法
您可以简单地使用
Window.Left和
Window.Top属性。从主窗口读取它们,并在调用ShowDialog()方法之前将值(加上20像素或其他)分配给AboutBox。
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的宽度来计算水平位置,这仅在加载后才知道。
protected override void OnInitialized(...) { this.Left = this.Owner.Left + (this.Owner.Width - this.ActualWidth) / 2; this.Top = this.Owner.Top + 20; }
gehho。