在WPF中,每个窗口使用一个弹出控件来显示进度消息

本文关键字:控件 一个 显示 消息 WPF 窗口 | 更新日期: 2023-09-27 18:19:02

我的WPF应用程序中大约有15个窗口,每个窗口调用一个类进行操作

例如:加载,删除等,我不想在每个窗口添加弹出控件。每个操作

操作类中的

方法以Window作为参数,有没有办法可以显示

操作方法在此窗口弹出操作进度消息?

或任何其他更好的方法来显示进度消息同时显示进度消息

窗口应该被禁用,以阻止用户进行任何其他操作。

谢谢

在WPF中,每个窗口使用一个弹出控件来显示进度消息

从你所说的,你的状态窗口是一个模态窗口。如果您让所有的操作类实现相同的接口来报告进度(并且还通知正在完成的操作,我猜),您可以创建一个状态窗口,您实例化正在完成的操作,并且您将使用ShowDialog调用。

我将创建一个静态类来管理状态消息,并让主窗口侦听这些消息。这样,只有主窗口负责显示弹出窗口,所有其他窗口都到一个地方报告状态更新。

伪:

static class StatusManager
{
    delegate onMessageReceivedEvent(string message);
    static event onMessageReceivedEvent OnMessageReceived;
    static void PostMessage(string message)
    {
        if(OnMessageReceived != null)
             OnMessageReceived.Invoke();
    }
}

在您的主窗口中,只需+= onmessagerreceived并在事件上发布消息。

同样,如果你只是想要一个状态消息保持直到所有其他的都完成,保持一个正在运行的窗口的计数器,一旦它达到0,关闭弹出。您可以简单地在弹出窗口中侦听事件并以这种方式更新gui。只要记住检查调度程序以确保更新gui是安全的。