从外部事件更新UI

时间:2009-08-07 15:43:17

标签: c# wpf winforms user-interface

首先,我不是UI开发人员,这可能是一个非常简单的问题。

我所拥有的是一个外部服务,我订阅了一个事件,当该事件触发服务时,以某种方式操纵数据,然后为UI提供要显示的数据

我不确定的是如何对此进行检查,并保持服务之间的依赖性,这将使UI更新,UI尽可能松散。

任何人都可以建议对此进行策略,或者在示例或开源项目上发布一些链接以实际查看一些正常工作的代码。

我正在使用c#和ether wpf或winforms。

干杯

科林G

4 个答案:

答案 0 :(得分:1)

我解决这个问题的方法是在你的ui中创建一个计时器,并让你的ui订阅'onTick'方法。然后,在每个计时器滴答声中,让UI查看服务并找出要显示的数据。

答案 1 :(得分:1)

这个应用程序有多简单?

最简单的解决方案是在一个对象中进行数据访问/操作,并将UI作为接口传递到该对象中。使用UI界面方法,您可以向UI提供数据,但让UI处理以GUI线程安全的方式显示数据。

如果它是一个更复杂的应用程序,我会说看看像MVC或MVP这样的东西更有意义。或者MVVM for WPF,也许可以看看Bea Costa的博客中的数据绑定示例。

答案 2 :(得分:0)

有很多方法可以让这只猫受到影响,但是在不了解您的要求和现有基础设施的情况下,我建议您使用EventBroker / Mediator。这是一种实现某种发布者/订阅者关系类型的简单方法,而不必担心过多的管道。

如果您使用Prism,我建议您使用EventAggregator

如果没有,您可以考虑使用John Smith编写的MVVMFoundation中可用的EventBroker的“Messenger”实现。它并不是真的依赖于你使用MVVM WPF,而是做你想要的: http://mvvmfoundation.codeplex.com/

希望这有帮助。

答案 3 :(得分:0)

  

然后为UI提供要显示的数据......

我建议你有一个服务代理层,它会引发一个事件并传递一个DTO。此事件应由包含绑定到UI的对象的图层订阅。一旦此图层收到DTO,请更新UI。