【发布时间】:2009-08-11 21:11:11
【问题描述】:
我已经开始使用我的第一个 Silverlight MVVM 应用程序,我需要知道我应该将业务逻辑(包括异步服务调用)放在哪里。它是否在托管视图的页面上?我是否只需设置更新视图的 ViewModel 的属性?
【问题讨论】:
标签: web-services silverlight-3.0 mvvm
我已经开始使用我的第一个 Silverlight MVVM 应用程序,我需要知道我应该将业务逻辑(包括异步服务调用)放在哪里。它是否在托管视图的页面上?我是否只需设置更新视图的 ViewModel 的属性?
【问题讨论】:
标签: web-services silverlight-3.0 mvvm
在 Silverlight 中执行 MVVM 比在 WPF 中更难,但我们已经做到了。是的,我们将异步服务调用放在 ViewModel 中。在我们的例子中,“模型”是通过 Web 服务调用来回发送的代理对象。不幸的是,这意味着您的一些功能在您的客户端 ViewModel 中,而一些在服务器端。真的没有办法解决这个问题。
...是的,让 Async Complete 事件处理程序写入 ViewModel 上的属性,并确保该属性(或集合)实现 INotifyPropertyChanged(或 INotifyCollectionChanged)。如果您从 Web 服务中获取“模型”对象,并且这些对象本身没有实现 INotifyPropertyChanged,那么您也应该考虑围绕这些对象包装 ViewModel 对象。这样,如果您对每个对象都有一个视图,它们就可以进行双向绑定。
【讨论】:
你有一个来自 Microsoft here 的好例子。这对我理解 MVVM 和 ASYNC 调用有很大帮助。
【讨论】:
我倾向于同意导致数据修改的服务调用应该由视图模型处理。
【讨论】:
我在模型中调用异步服务,并挂钩到来自我的视图模型的事件,这些事件在数据返回模型时被触发。
【讨论】: