4

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

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

我不知道为什么我的用户会这样工作,但他们确实会这样做,这会引起很多混乱。

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

我的想法是在用户打开SaveDialog 之前将PreviewWindow 放在最上面。并在SaveDialog具有 endet 后再次使其位于最顶层。

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

4

3 回答 3

2

两件事情:

  1. 确保您的 PreviewWindow 已ShowInTaskbar设置为False.
  2. 设置PreviewWindow.Owner = MainWindow然后尝试同时使用Show()ShowDialog()
于 2013-03-25T09:49:27.633 回答
1

如果它是一个模态窗口,您应该使用Window.ShowDialog()来显示它。

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

于 2013-03-25T09:45:58.773 回答
1

其他答案不完整或不相关。对不起大家 ;)

使用 ShowDialog() 以等待第二个窗口结束,然后再继续第一个窗口。使用 Owner 属性链接窗口。

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

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

您不需要设置 TopMost 或 ShowInTaskbar 属性(但如果您想要特定的行为,您可以)

于 2013-03-25T10:50:21.880 回答