如何让子窗口最小化和最大化与主窗口

问题描述:

我的应用程序运行查询,并在他们运行时,我禁用主应用程序,并显示进度条屏幕。我希望这两个屏幕表现为一个单一的实体。我的意思是,如果用户在执行查询期间最小化主应用程序,那么进度屏幕也会最小化。如果他们最大化或使主应用程序备份,进度屏幕也会恢复(并在前面)。如何让子窗口最小化和最大化与主窗口

我试图通过使用_StateChanged事件并操纵里面的进度屏幕,但它不工作。 WriteLines按照他们应该的方式触发,但进度屏幕没有变化(即,当我最大化主应用程序时,进度屏幕没有得到最大化)。

private void mainWindow_StateChanged(object sender, EventArgs e) 
    { 
     Console.WriteLine("State Changed"); 

     // if the progress screen is not null 
     if (ql != null) 
     { 
      // if main application has been minimized 
      if (this.WindowState == WindowState.Minimized) 
      { 
       Console.WriteLine("State Changed to Minimized"); 
       ql.WindowState = WindowState.Minimized; // minimize progress screen 
      } 
      // if main application has been set to normal 
      if (this.WindowState == WindowState.Normal) 
      { 
       Console.WriteLine("State Changed to Normal"); 
       ql.WindowState = WindowState.Normal; // set progress screen state to normal 
       ql.Focus(); // bring progress screen to focus 
      } 

      // if main application has been maximized 
      if (this.WindowState == WindowState.Maximized) 
      { 
       Console.WriteLine("State Changed to Maximized"); 
       ql.WindowState = WindowState.Maximized; // set progress screen state to maximized 
       ql.Focus(); // bring progress screen to focus 
      } 
     } 
    } 

我很好奇,如果有在,我应该充分利用,而不是试图用代码来实现这一点的.xaml性能。如果没有,我的代码丢失了什么?

+0

由于父窗口和子窗口都是视图,因此绑定到数据模型并不合适,因此您可以尝试直接绑定到窗口状态属性,请参阅https://msdn.microsoft.com/en-us/library /system.windows.window.windowstate(v=vs.110).aspx但是这在 – MikeT

如果QL是一个窗口,然后你可以将它的主人像这样的主窗口:

ql.Owner = mainWindow; 

你需要显示QL窗口前,要做到这一点只有一次。 你不需要在StateChanged中做任何关于ql的事情。

+1

后面的代码中并不适用这正是我所寻找的,欢呼声! –