C# 使窗口不被折叠后可见后,所有其他窗口下的WPF窗口

C# 使窗口不被折叠后可见后,所有其他窗口下的WPF窗口,c#,wpf,wpf-controls,visibility,show-hide,C#,Wpf,Wpf Controls,Visibility,Show Hide,我的WPF窗口有一些非常令人沮丧的问题。我想要的设计是: 当用户最小化窗口时,它将最小化为系统托盘图标(隐藏窗口和开始栏上的图标)。当用户右键单击图标时,将显示一个带有选项的上下文菜单,其中一个将显示open,这将打开应用程序(再次显示窗口/再次取消隐藏窗口)。用户也可以双击图标 很简单吧 我对最小化任务栏没有任何问题,我只是在窗口的关闭事件上执行以下操作: e.Cancel = true; this.Visibility = Visibility.Collapsed; 但是,我在正确恢复窗口

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

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

很简单吧

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

e.Cancel = true;
this.Visibility = Visibility.Collapsed;
但是,我在正确恢复窗口时遇到问题。我只需在关联菜单单击或图标双击事件上执行此操作:

this.Visibility = Visibility.Visible;
this.Activate();
问题是该窗口再次出现在带有图标的开始栏上,但它位于用户打开的每个窗口的后面。我想要它,所以当用户打开窗口时,它将是最上面的窗口。我并不总是希望它是最上面的,只是当他们想让它再次可见的时候

我尝试过很多方法,比如将show activate on the window设置为true,在显示窗口后等待一秒钟,然后激活窗口,多次激活窗口(工作了几次,但可能是10次尝试中的1次),等等

我不认为显示/隐藏窗口应该如此烦人,我也不确定我做错了什么


非常感谢您的帮助。

发布此信息后,我才意识到,应用程序在隐藏之前会先最小化。当我显示窗口时,它显示为最小化

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

编辑 下面是我用来隐藏窗口的代码(这是在为state changed[minimized]触发事件后调用的):

您会注意到,在隐藏窗口后,我将其状态设置回正常状态。即使窗口隐藏且未渲染,它仍将在内存中恢复窗口位置/大小

然后,当我想再次看到窗口时,我只需执行以下操作:

Application.Current.MainWindow.Visibility = Visibility.Visible;
这样窗户就可以看到了


希望这能帮助别人

那么,你到底要做什么来解决这个问题呢?把窗户缩小?还有别的吗?。。。
Application.Current.MainWindow.Visibility = Visibility.Visible;