Wil*_*ill 8 c# silverlight asynchronous windows-phone-7
我在确定从Web服务到UI获取数据的最佳方法时遇到了一些麻烦.
鉴于WebClient的异步性质,您将如何构建它?
在Async完成事件中,我需要将数据从模型中取回ViewModel,这些是我想到的.
这取决于您想要对 MVVM 有多纯粹。
您可以将 API 本身视为您的模型,在这种情况下,ViewModel 具有 WebClient,并且在异步完成时您可以设置属性(它们反过来会从其设置器中触发 PropertyChanged)。
或者您可以拥有一个包含 WebClient 代码的本地模型(听起来就像您拥有的那样)。在这种情况下,我个人的方法是从异步完成事件触发“ModelUpdated”事件。(您的选择 1)。
您的 ViewModel 可以侦听此事件,并触发 aPropertyChanged(null)让视图请求所有属性,或触发多个 PropertyChanged 事件。请记住,您并不局限于从 setter 中触发 PropertyChanged。没有什么可以阻止你使用像这样的方法
private void FireMultipleProperties(){
NotifyPropertyChanged("Property1");
NotifyPropertyChanged("Property2");
NotifyPropertyChanged("Property3");
}
因此,您可以在模型完成填充时调用该方法,并且您的 UI 将在触发每个属性时调用更新它们。仅当您有大量属性并且不想使用 一次性将它们全部解雇时,您才需要执行此操作PropertyChanged(null)。