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
、より良いアイデアを使用しますか?