【问题标题】:Center dynamic size window in parent window在父窗口中居中动态大小窗口
【发布时间】:2017-05-05 08:20:14
【问题描述】:

问题

由于子窗口动态大小,WindowStartupLocation 属性无法正常工作。它将子窗口置于中心,但之后,子窗口改变大小并开始从主窗口底部“弹出”。

问题

如何将父窗口的子窗口居中,同时考虑到子窗口是动态大小的?

代码示例:
var window = new WindowDialog(MainWindow, "Title", new DialogAgent(), false)
            {
                WindowStartupLocation = WindowStartupLocation.CenterOwner,
                SizeToContent = SizeToContent.Height,
                ShowInTaskbar = false
            };

【问题讨论】:

  • 不能提供示例代码吗?
  • 好的,就在这里。

标签: c# wpf windows xaml


【解决方案1】:

你可以试试这样的:

ChildWindow cw = new ChildWindow();
cw.ShowInTaskbar = false;
cw.Owner = Application.Current.MainWindow;
cw.Show();

在 XAML 的子窗口中:

WindowStartupLocation="CenterScreen" 

您可以尝试使用一种简单的方法使窗口居中,以根据所有者窗口重新计算窗口的位置,并在您的 Loaded 事件结束时调用此方法,如下所示(Here 用于讨论):

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() 方法确实是我的问题的解决方案 :) 谢谢。附言我在想我在那个属性字段(WindowStartupLocation)上做错了
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
相关资源
最近更新 更多