【问题标题】:Allow user interactivity in secondary window while modal dialog is open模式对话框打开时允许用户在辅助窗口中进行交互
【发布时间】:2014-02-27 03:43:57
【问题描述】:

我正在开发一个 WPF 应用程序,我有几个外围设备。我正在为这些外围设备之一编写一个存根,它打开一个模拟外围设备接口的辅助窗口。这主要用于开发和 QA 自动化目的。

我遇到的问题是我的应用程序通常会在期望用户通过外围设备输入时打开一个模式对话框,并且该对话框阻止访问存根窗口,这意味着没有用户输入。

有没有办法让对话框在仍阻止主窗口的同时授予对辅助(存根)窗口的访问权限?我尝试将第二个窗口放在单独的 UI 线程上,但它仍然被阻止。我目前正在研究多个应用程序域,但我的应用程序通常通过事件与外围设备交互,并且(根据我的阅读)这些不会跨域共享。

【问题讨论】:

    标签: c# wpf multithreading modal-dialog


    【解决方案1】:

    我从未在 WPF 中尝试过相同的方法,但在 Windows 窗体中,模式对话只会影响在同一线程上创建的窗体。如果您在单独的线程上创建外围窗口,则它不会被模态对话框阻止。这将使在该窗口和在 UI 线程上创建的窗口之间传递数据变得更加乏味,但肯定不是不可能的。

    【讨论】:

    • 我终于得到了这个工作,但我不得不在第二个线程上使用 ShowDialog() 而不仅仅是 Show()。这样,第二个窗口保持打开状态,使线程保持活动状态,直到窗口关闭。主窗口中的对话框似乎只阻止该对话框共享的线程上的窗口。最后,我们已经有了一个强大的框架来处理跨多个线程的事件,所以这不是问题。
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    相关资源
    最近更新 更多