【问题标题】:MVVM in Silverlight - Where does async service logic go?Silverlight 中的 MVVM - 异步服务逻辑在哪里?
【发布时间】:2009-08-11 21:11:11
【问题描述】:

我已经开始使用我的第一个 Silverlight MVVM 应用程序,我需要知道我应该将业务逻辑(包括异步服务调用)放在哪里。它是否在托管视图的页面上?我是否只需设置更新视图的 ViewModel 的属性?

【问题讨论】:

    标签: web-services silverlight-3.0 mvvm


    【解决方案1】:

    在 Silverlight 中执行 MVVM 比在 WPF 中更难,但我们已经做到了。是的,我们将异步服务调用放在 ViewModel 中。在我们的例子中,“模型”是通过 Web 服务调用来回发送的代理对象。不幸的是,这意味着您的一些功能在您的客户端 ViewModel 中,而一些在服务器端。真的没有办法解决这个问题。

    ...是的,让 Async Complete 事件处理程序写入 ViewModel 上的属性,并确保该属性(或集合)实现 INotifyPropertyChanged(或 INotifyCollectionChanged)。如果您从 Web 服务中获取“模型”对象,并且这些对象本身没有实现 INotifyPropertyChanged,那么您也应该考虑围绕这些对象包装 ViewModel 对象。这样,如果您对每个对象都有一个视图,它们就可以进行双向绑定。

    【讨论】:

      【解决方案2】:

      你有一个来自 Microsoft here 的好例子。这对我理解 MVVM 和 ASYNC 调用有很大帮助。

      【讨论】:

        【解决方案3】:

        我倾向于同意导致数据修改的服务调用应该由视图模型处理。

        【讨论】:

          【解决方案4】:

          我在模型中调用异步服务,并挂钩到来自我的视图模型的事件,这些事件在数据返回模型时被触发。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-07-26
            • 1970-01-01
            • 2023-04-07
            • 1970-01-01
            • 2011-12-26
            • 2011-06-01
            • 2011-09-24
            • 1970-01-01
            相关资源
            最近更新 更多