WindowsPhone7アプリでMVVMを使用しようとしています。私はこれをどのように行うべきかについて少し混乱しています。
Webブラウザでナビゲートするためのコードビハインドイベントがあります。これで、このイベントは最終的に、GoogleoAuthを使用してユーザーをログインさせるメソッドを呼び出します。
これで、Googleへのログインメソッドを呼び出すコードがサービスレイヤーにあります。サービスレイヤーを呼び出すVMでプロパティを作成する必要があるのか、それともコードビハインドページでサービスレイヤーオブジェクトを直接作成して直接呼び出す必要があるのかわかりません。
行くための最良の方法は何ですか?
編集
これが私がしたことです
//コードビハインド
private void wbGoogle_Navigating(object sender, NavigatingEventArgs e)
{
var queryParmas = e.Uri.ParseQueryString();
var code = queryParmas.ToList().Where(x => x.Key == "code").FirstOrDefault();
if (!code.Equals(new KeyValuePair<string, string>()))
{
loginVm.AuthenticateUser(code.Value, TestCallBack);
}
}
private void TestCallBack(Authorization a)
{
var d = a;
// maybe assign "a" to some property back in the VM.
}
// Vm
public void AuthenticateUser(string code, Action<GoogleContacts.Model.Authorization> CallbackOnSuccess)
{
loginService.SendCode(code, CallbackOnSuccess);
}
//サービスレイヤー
public void SendCode(string code, Action<Authorization> CallbackOnSuccess)
{
var request = new RestRequest(TokenEndPoint, Method.POST);
request.AddParameter("code", code);
request.AddParameter("client_id", ClientId);
request.AddParameter("client_secret", SecretKey);
request.AddParameter("grant_type", GrantType);
request.AddParameter("redirect_uri", RedirectUrl);
client.ExecuteAsync<Authorization>(request, response =>
{
CallbackOnSuccess(response.Data);
});
}