如何通过主窗口使子窗口最小化和最大化

时间:2016-09-27 16:06:58

标签: c# wpf xaml

我的应用程序运行查询,当它们运行时,我禁用主应用程序并显示进度条屏幕。我希望这两个屏幕表现为一个单一的实体。我的意思是,如果用户在执行查询期间最小化主应用程序,那么进度屏幕也会被最小化。如果他们最大化或重新启动主应用程序,进度屏幕也会恢复(并且在前面)。

我尝试使用_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中有属性我应该利用而不是试图在代码中完成此操作。如果没有,我的代码中缺少什么?

1 个答案:

答案 0 :(得分:2)

如果ql是一个Window,那么你可以将它的所有者设置为mainWindow,如下所示:

../rest/api/2..

在显示ql窗口之前,您只需执行此操作一次。 你不再需要在StateChanged中做任何关于ql的事了。