独自のAboutBoxを作成していて、Window.ShowDialog()を使用して呼び出しています。
メインウィンドウを基準にして、つまり上から20ピクセル、中央に配置するにはどうすればよいですか?
Window.Left および Window.Top プロパティを使用するだけです。メインウィンドウからそれらを読み取り、ShowDialog()
メソッドを呼び出してAboutBoxbeforeに値(プラス20ピクセルなど)を割り当てます。
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;
AboutBoxの幅に応じて水平位置を計算する必要があるため、垂直方向ではなく水平方向の中央に配置する(つまり、垂直方向の位置を固定する)場合は、AboutBoxが読み込まれた後にEventHandlerでそれを行う必要があります。 、およびこれは、ロードされた後にのみ認識されます。
protected override void OnInitialized(...)
{
this.Left = this.Owner.Left + (this.Owner.Width - this.ActualWidth) / 2;
this.Top = this.Owner.Top + 20;
}
gehho。
WPFを頼りに計算するのではなく、手動で計算します。
System.Windows.Point positionFromScreen = this.ABC.PointToScreen(new System.Windows.Point(0, 0));
PresentationSource source = PresentationSource.FromVisual(this);
System.Windows.Point targetPoints = source.CompositionTarget.TransformFromDevice.Transform(positionFromScreen);
AboutBox.Top = targetPoints.Y - this.ABC.ActualHeight + 15;
AboutBox.Left = targetPoints.X - 55;
ここで、ABC
は親ウィンドウ内のUIElementです(必要に応じてOwnerにすることもできます)。また、ウィンドウ自体(左上のポイント)にすることもできます。
幸運を