C# 在父窗口中居中动态大小窗口 问题
由于子窗口的动态大小,属性WindowsStartUpLocation无法正常工作。它将子窗口放在中间,但在此之后,子窗口会改变其大小,并开始从主窗口的底部弹出 问题 考虑到子窗口具有动态大小,如何将父窗口的子窗口置于中心 代码示例:C# 在父窗口中居中动态大小窗口 问题,c#,wpf,windows,xaml,C#,Wpf,Windows,Xaml,由于子窗口的动态大小,属性WindowsStartUpLocation无法正常工作。它将子窗口放在中间,但在此之后,子窗口会改变其大小,并开始从主窗口的底部弹出 问题 考虑到子窗口具有动态大小,如何将父窗口的子窗口置于中心 代码示例: var window = new WindowDialog(MainWindow, "Title", new DialogAgent(), false) { WindowStartupLo
var window = new WindowDialog(MainWindow, "Title", new DialogAgent(), false)
{
WindowStartupLocation = WindowStartupLocation.CenterOwner,
SizeToContent = SizeToContent.Height,
ShowInTaskbar = false
};
您可以尝试以下方法:
ChildWindow cw = new ChildWindow();
cw.ShowInTaskbar = false;
cw.Owner = Application.Current.MainWindow;
cw.Show();
在XAML的子窗口中:
WindowStartupLocation="CenterScreen"
您可以尝试使用一个简单的方法将窗口居中,以根据所有者窗口重新计算窗口的位置,并在加载的事件结束时调用此方法,如下所示:
private void CenterOwner()
{
if (Owner != null)
{
double top = Owner.Top + ((Owner.Height - this.ActualHeight) / 2);
double left = Owner.Left + ((Owner.Width - this.ActualWidth) / 2);
this.Top = top < 0 ? 0 : top;
this.Left = left < 0 ? 0 : left;
}
}
你不能提供示例代码吗?当然,在这里。这就是我试图做的,但仍然不能正常工作:哦,CenterOwner方法确实解决了我的问题:谢谢。另外,我在想我在属性字段WindowsStartUplocation上做错了什么