Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在WPF中最大化后,如何在主窗口的中心显示子窗口?_.net_Wpf_Maximize Window - Fatal编程技术网

.net 在WPF中最大化后,如何在主窗口的中心显示子窗口?

.net 在WPF中最大化后,如何在主窗口的中心显示子窗口?,.net,wpf,maximize-window,.net,Wpf,Maximize Window,我有一个子窗口,高度=300,宽度=400。当我最大化这个子窗口时,它会显示在左侧=0,顶部=0的位置。我希望它显示在主窗口的中心 我尝试了以下方法 在Window_StateChanged事件中,我尝试将其位置更改为left=100和Top=140。这些值已分配,但仍显示在left=0和Top=0位置 我还试图改变它在Window_SizeChanged事件中的位置,但它也不起作用 然后我觉得布局可能无法刷新,所以我使用这个.UpdateLayout()刷新了布局,但没有工作 这可能就是你想

我有一个子窗口,高度=300,宽度=400。当我最大化这个子窗口时,它会显示在左侧=0,顶部=0的位置。我希望它显示在主窗口的中心

我尝试了以下方法

  • 在Window_StateChanged事件中,我尝试将其位置更改为left=100和Top=140。这些值已分配,但仍显示在left=0和Top=0位置

  • 我还试图改变它在Window_SizeChanged事件中的位置,但它也不起作用

  • 然后我觉得布局可能无法刷新,所以我使用这个.UpdateLayout()刷新了布局,但没有工作


    • 这可能就是你想要的

          void Window1_StateChanged(object sender, EventArgs e)
          {
              if (this.WindowState == System.Windows.WindowState.Maximized)
              {
                  this.WindowState = System.Windows.WindowState.Normal;
                  this.Left = (App.Current.MainWindow.Width - this.MaxWidth) / 2 + App.Current.MainWindow.Left;
                  this.Top = (App.Current.MainWindow.Height - this.MaxHeight) / 2 + App.Current.MainWindow.Top;
                  this.Width = this.MaxWidth;
                  this.Height = this.MaxHeight;
              }
          }
      

      “最大化”和“中心化”通常不会同时出现。。。你是在问如何将控件保持在主窗口的中心位置吗?我希望我的子窗口在最大化后处于相同的位置。它应该增加大小,但不增加位置。这里有一些有趣的事情我还没有完全弄明白:(在NuGet中找到Microsoft.Windows.Shell)感谢你的努力,兄弟,但是现在这样做,窗口的状态变得正常,我将无法“还原”。