如何让子窗口最小化和最大化与主窗口
问题描述:
我的应用程序运行查询,并在他们运行时,我禁用主应用程序,并显示进度条屏幕。我希望这两个屏幕表现为一个单一的实体。我的意思是,如果用户在执行查询期间最小化主应用程序,那么进度屏幕也会最小化。如果他们最大化或使主应用程序备份,进度屏幕也会恢复(并在前面)。如何让子窗口最小化和最大化与主窗口
我试图通过使用_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性能。如果没有,我的代码丢失了什么?
答
如果QL是一个窗口,然后你可以将它的主人像这样的主窗口:
ql.Owner = mainWindow;
你需要显示QL窗口前,要做到这一点只有一次。 你不需要在StateChanged中做任何关于ql的事情。
+1
后面的代码中并不适用这正是我所寻找的,欢呼声! –
由于父窗口和子窗口都是视图,因此绑定到数据模型并不合适,因此您可以尝试直接绑定到窗口状态属性,请参阅https://msdn.microsoft.com/en-us/library /system.windows.window.windowstate(v=vs.110).aspx但是这在 – MikeT