在WPF中,每个窗口使用一个弹出控件来显示进度消息
本文关键字:控件 一个 显示 消息 WPF 窗口 | 更新日期: 2023-09-27 18:19:02
我的WPF应用程序中大约有15个窗口,每个窗口调用一个类进行操作
例如:加载,删除等,我不想在每个窗口添加弹出控件。每个操作
操作类中的方法以Window作为参数,有没有办法可以显示
操作方法在此窗口弹出操作进度消息?
或任何其他更好的方法来显示进度消息同时显示进度消息
窗口应该被禁用,以阻止用户进行任何其他操作。
谢谢
从你所说的,你的状态窗口是一个模态窗口。如果您让所有的操作类实现相同的接口来报告进度(并且还通知正在完成的操作,我猜),您可以创建一个状态窗口,您实例化正在完成的操作,并且您将使用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是安全的。