我现在一直在努力解决这个问题,但我还没有得出结论。我通常不是UI程序员,所以请原谅noobishness。
我正在编写一个带有UI层(WPF)和业务层的典型应用程序。我想从业务层(可能深入业务层)向UI发布状态消息,但我不希望业务层具有任何 UI知识。是否有普遍接受的模式?
我想要有一个业务层发布状态消息的某种消息队列,并让UI的视图模型订阅该队列并拦截来自队列的消息并将它们路由到UI。这是一个好方法吗?还有其他地方我应该开始吗?
谢谢。
答案 0 :(得分:1)
我认为这是一个很好的方法。我将为您的消息提供者创建一个接口,该接口在收到消息时发布事件(其中Message是您想要的消息类型):
public class MessageReceivedEventArgs : EventArgs
{
public MessageReceivedEventArgs(Message message)
: base()
{
Message = message;
}
public Message Message { get; set; }
}
public delegate void MessageRecievedHandler(object sender, MessageReceivedEventArgs e);
public interface IMessageProvider
{
event MessageRecievedHandler MessageReceived;
void Start();
void Stop();
bool IsRunning { get; }
}
public abstract class MessageProviderBase : IMessageProvider
{
public event MessageRecievedHandler MessageReceived;
public MessageProviderBase()
{}
protected void OnMessageReceived(MessageReceivedEventArgs e)
{
if (MessageReceived != null)
{
MessageReceived(this, e);
}
}
public abstract void Start();
public abstract void Stop();
public abstract bool IsRunning { get; }
}