类之间传递事件的最佳方法是什么?问题是:我有一个连接类,当连接特定的 USB 设备时,我希望另一个类的 GUI(它将配置设备)具有"已连接"标志,当断开连接时具有"断开连接"标志。我正在考虑创建一个新的事件处理程序,并将此事件处理程序添加到UI控制器类中,连接类将"触发"事件,这是正确的,还是有更好的方法?
有两种方法可以解决这个问题。一种是在连接状态更改时触发一个事件。GUI 可以侦听事件并相应地更新其显示。这是一个相对简单的模型,并且在不同的库中得到了很好的支持,因为事件是 C# 语言的一部分。
第二种方法是使用 Windows Presentation Foundation 或类似的库,方法是通过数据绑定。UI 控件"绑定"到连接类,当连接类的属性更新时,UI 会自动更新。设置起来稍微复杂一些,并且特定于库(链接适用于 WPF)。然而,这是一个更加强大和灵活的概念。
尝试使用Microsoft Prism中的EventAggregator
。我更喜欢它,因为它是高度解耦的,而且也相当轻量级。
更多关于棱镜和EventAggregator
:
http://msdn.microsoft.com/en-us/library/ff921122(v=pandp.20).aspx