在折叠后使窗口可见后,所有其他窗口下的WPF窗口

时间:2015-04-10 03:29:21

标签: c# wpf wpf-controls visibility show-hide

我的WPF窗口有一些非常令人沮丧的问题。我想要的设计是:

当用户最小化窗口时,它将最小化到系统托盘图标(隐藏开始栏上的窗口和图标)。当用户右键单击图标时,上下文菜单将显示选项,其中一个将显示打开,这将打开应用程序(再次显示窗口/取消隐藏窗口agian)。用户也可以双击该图标。

非常简单吧?

我没有问题最小化到任务栏,我只是在窗口的关闭事件上执行以下操作:

e.Cancel = true;
this.Visibility = Visibility.Collapsed;

但是,我遇到了正确恢复窗口的问题。我只是在上下文菜单中单击或图标双击事件:

this.Visibility = Visibility.Visible;
this.Activate();

问题是窗口再次出现在带有图标的开始栏上,但它位于用户打开的每个窗口的后面。我想要它,所以当用户打开窗口时它将是最顶层的窗口。我并不总是希望它成为最顶层的,只是当它们想让它再次可见时。

我尝试了很多东西,例如将窗口上的show activate设置为true,等待一秒钟后使其显示然后激活窗口,多次激活窗口(工作几次,但可能是10次尝试中的1次) )等等。

我不认为显示/隐藏窗口应该令人烦恼,我不确定我做错了什么。

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

只有在发布这个之后才知道,应用程序在隐藏之前首先最小化。当我显示窗口时,它显示为最小化。

在知道这个问题后,我能够解决这个问题。这可能有助于其他决定在最小化后隐藏窗口的人。

修改 这是我用来隐藏窗口的代码(这是在事件触发状态改变后调用的[最小化]):

Application.Current.MainWindow.Visibility = Visibility.Collapsed;
Application.Current.MainWindow.WindowState = WindowState.Normal;

我会注意到隐藏后我将窗口状态恢复正常。即使窗口被隐藏而未被渲染,它也会在内存中恢复窗口位置/大小。

然后,当我想再次看到窗口时,我只是这样做:

Application.Current.MainWindow.Visibility = Visibility.Visible;

这将显示窗口就好了!

希望这可以帮助那些人!