窗口最顶端的混乱 - 没有出路?

时间:2013-03-25 09:32:50

标签: c# wpf

在我的WPF应用程序中,我有一个全屏 MainWindow 。在 MainWindow 中,用户可以打开 PreviewWindow PreviewWindow 是一个模态窗口,因此它位于MainWindow的顶部。到目前为止一切都很好。

PreviewWindow 打开时,用户仍然可以从Windows任务栏中选择 MainWindow 。然后 PreviewWindow 隐藏在 MainWindow 下,但 MainWindow 是开源的,因为 PreviewWindow 仍然是唯一的活动窗口。对于用户来说,应用程序似乎没有响应。

我不知道为什么我的用户会像那样工作,但他们这样做会导致很多混乱。

我们的第一个解决方案是将 PreviewWindow 置于最顶端,但这并没有多大帮助。在 PreviewWindow 中,用户可以打开 SaveDialog 。但是 PreviewWindow 最顶层的 SaveDialog 隐藏在 PreviewWindow 下。

我的想法是让 PreviewWindow 最顶层,直到用户打开 SaveDialog 。并且在 SaveDialog 已经尝试之后再次将其放在最顶端。

这是唯一的方法吗? 有没有办法在选择父窗口时将模态窗口带回顶部?

3 个答案:

答案 0 :(得分:2)

两件事:

  1. 确保您的PreviewWindow已将ShowInTaskbar设置为False
  2. 设置PreviewWindow.Owner = MainWindow,然后同时使用Show()ShowDialog()

答案 1 :(得分:1)

如果是模态窗口,则应使用Window.ShowDialog()显示它。

你有什么理由不能这样做吗?

答案 2 :(得分:1)

其他答案不完整或相关。对不起伙计们;)

在继续第一个窗口之前,使用ShowDialog()等待第二个窗口结束。使用所有者属性链接窗口。

   previewWindow = new Window2();
   previewWindow.Owner = this;
   previewWindow.ShowDialog();

如果你愿意,可以使用3个或更多窗口(w1启动w2,w2启动w3,......)。在任务栏中选择第一个窗口时,将显示所有窗口。

您无需设置TopMost或ShowInTaskbar属性(但如果您需要特定行为,则可以使用)