【发布时间】:2013-02-01 10:51:30
【问题描述】:
我的带有 MVVM 模式的 WPF 应用程序基本上应该执行以下操作:
- 按钮视图绑定到视图模型中的命令。 --> 检查!
- 视图模型中的命令异步查询 Web 服务以获取
CProject对象列表,以便将其放入ProjectList属性中。 --> 检查!
这看起来像这样......
视图模型中的命令:
proxy = new SomeService();
proxy.GetProjectList(GetProjectListCallback, username, password);
视图模型中的回调:
private void GetProjectListCallback(object sender, GetProjectListCompletedEventArgs e) {
this.ProjectList = e.Result;
}
SomeService 实现了一个接口ISomeService。
public void GetProjectList(EventHandler<GetProjectListCompletedEventArgs> callback, string username, string password) {
service.GetProjectListCompleted += callback;
service.GetProjectListAsync(username, password);
}
到目前为止,这工作正常。但是我觉得我想将此回调移动到服务本身,以便视图模型只调用如下内容:
proxy = new SomeService();
this.ProjectList = proxy.GetProjectList(username, password);
但是,当将回调移动到服务时,它如何将e.Result 返回到调用视图模型?还是使用Task 更好?
【问题讨论】:
-
你用的是VS2012吗?您的目标是什么 .NET 版本?
-
@StephenCleary:是的,我使用的是 VS 2012。目标框架应该至少是 .NET 4。不过 4.5 也可以。
标签: c# wcf mvvm asynchronous