【问题标题】:WPF Window under all other windows after making window visible from being collapsed使窗口从折叠中可见后,所有其他窗口下的 WPF 窗口
【发布时间】:2015-06-15 15:57:51
【问题描述】:

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

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

很简单吧?

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

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

但是,我在正确恢复窗口时遇到了问题。我只是在上下文菜单单击或图标双击事件上执行此操作:

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

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

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

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

感谢您的帮助,谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    您会注意到,在我隐藏它之后,我将窗口状态恢复为正常状态。即使窗口被隐藏并且没有被渲染,它也会在内存中恢复窗口位置/大小。

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

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

    这会很好地显示窗口!

    希望这对那里的人有所帮助!

    【讨论】:

    • 那么您究竟需要做些什么来解决这个问题?最小化窗口?还有什么?...
    猜你喜欢
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 2013-04-29
    • 2010-12-27
    相关资源
    最近更新 更多