使用WCF服务实现MMVM的好习惯是什么? View模型将与服务进行通信。所以我们在视图中说我有3-4个数据显示模块。模块的所有这些信息来自不同的WCF服务调用。 如果我同步执行此操作,我会感觉视图模型中的数据需要一些时间来加载。
我希望异步调用所有这些服务方法,而不是等待第一次调用返回。这样做的好方法是什么?
答案 0 :(得分:1)
我认为最好的方法是异步调用服务,然后在Complete方法上赋值,如:
class TestViewModel : ViewModelBase
{
private ObservableCollection<string> data;
public ObservableCollection<string> Data
{
get { return data; }
set
{
if (value == data) return;
data = value;
RaisePropertyChanged("Data");
}
}
public TestViewModel()
{
GetDataClient proxy = new GetDataClient();
System.EventHandler<GetDataCompletedEventArgs> Client_GetDataCompleted = null;
Client_GetDataCompleted = (s, e) =>
{
if (e.Error == null && e.Result != null)
{
Data = new ObservableCollection<SelectionItem<string>>(e.Result));
}
proxy.GetDataCompleted -= Client_GetDataCompleted;
};
proxy.GetDataCompleted += Client_GetDataCompleted;
proxy.GetDataAsync();
}
}