不相关的类之间的事件

Nig*_*ker 2 c# wpf events

我有一个A类,它是我主窗口的数据上下文.我有B类,它是应用程序的一个窗口的视图模型.类之间没有关系.

我需要以某种方式在类B中引发事件,而事件处理程序位于类A中.

有可能这样做吗?

我正在做的例子是:我想从B类改变主窗口标题.

感谢帮助

Ste*_*ins 6

在我的书中,您应该查看pub/sub的messenger/event聚合器.PRISM附带一个,所以做MVVM Light工具包之类的东西,或者你可以从Github - TinyMessenger获取我自己的"drop in cs file" .

这允许分离的通信 - 发布者和订阅者共同的唯一事情是聚合器和消息格式本身.如果类是不相关的,并且可能是单独构造的,则不应将它们与事件耦合.如果你确实使用了一个事件,你需要知道订阅一个事件对GC的影响,如果预计这两个类的生命周期不同.

所以,在一个非常简单的例子中,在A类中你会做类似的事情

this.messenger.Subscribe<TitleChangeMessage>(m => <do some stuff>);
Run Code Online (Sandbox Code Playgroud)

然后在B级,每当你要发射"事件"时,你会做:

this.messenger.Publish(new TitleChangedMessage("new title"));
Run Code Online (Sandbox Code Playgroud)