从WPF MVVM应用程序中的异步命令返回数据

时间:2011-12-12 17:08:37

标签: wpf mvvm asynchronous

让这个工作变得有点困难 - 说实话,我觉得我可能不会用正确的方法做到这一点。

在我的视图中,我有一个按钮和两个列表框。

我想要的是点击按钮,让两个列表框以异步方式填充两个单独的字符串列表。

在我的ViewModel中,我有两个ObservableCollection属性,这些属性也是ListBox.ItemsSource属性的绑定。一切都好。

现在,我有一个AsyncDelegateCommand的实例(在这篇文章中概述 - http://www.amazedsaint.com/2010/10/asynchronous-delegate-command-for-your.html#),我将数据绑定到按钮的Command属性。

在DoSomething()方法中,我刚刚制作了一个快速示例,它构建了一个随机字符串列表,其间有几个睡眠模拟一些经过的时间。

如何返回此集合以在ViewModel中使用?然后更进一步,如何为多个ListBox返回此集合的多个实例?

我希望这是有道理的!

克里斯

1 个答案:

答案 0 :(得分:1)

使用您引用的AsyncDelegateCommand,您将订阅Command的Completed事件,并将您的集合的结果从事件参数Result添加到您的ObservableCollection。

这将自动发生在正确的同步上下文中(因为该命令使用BackgroundWorker来运行),这将允许您的UI正确更新。