【发布时间】:2016-09-28 21:58:08
【问题描述】:
我想观察有关我的应用程序中所有窗口的某些信息。我有一个窗口(通过 Observables)显示大量信息,但除了轮询之外,我找不到任何可以让我知道所有窗口(以及我的应用程序中所有打开的窗口)的窗口。
我是否可以订阅某个地方,这对于显示任何窗口(@987654323@ 或 .ShowDialog())来说都是一个很好的钩子?
【问题讨论】:
-
模态对话框阻止了与其父窗口的交互事件。在刚才的测试中,我能够创建一个父窗口,它非模态显示一个非子窗口。
public MainWindow() { InitializeComponent(); (new TestWindow()).Show(); }。当MainWindow显示一个模态子窗口时(MessageBox会这样做),TestWindow继续响应用户输入,因为它不是主窗口的子窗口。如果你的第一段是你真正关心的,其余的只是一种假设的方式,那就很容易了。 -
...也就是说,除非您的意思是希望您的主窗口在有一个模态子窗口时具有响应性。这也很容易:只是不要让孩子模态。如果您希望
ShowDialog()的所有内容都是让孩子保持领先,那么还有其他方法可以做到这一点。 -
我已经在窗口上调用了 app.xaml.cs 调用 show ,没有设置子级,但是当出现模式对话框时,转储实时窗口不会让我点击它查看诊断信息。我希望所有模态都像在应用程序中那样表现。但是这个忽略任何/所有模态。由于某种原因,作为非孩子打开这个窗口并没有帮助。您的示例案例看起来应该适合我。
-
如果它不起作用,我猜你可能正在做一些不同的事情。猜不出是什么。
-
@Maslow,当我在 WinForms 中遇到类似问题(开发人员环境中有多个模式对话框)时,我在这里使用了 Marc Gravell 建议的方法:stackoverflow.com/a/428556/1506454 for is-it-possible-to-use-showdialog-without-blocking-all-forms。还没有尝试过 wpf windows :\.如上所述使用
window.Show()不适合我:窗口被另一个模态对话框阻塞
标签: wpf