私が開発している Windows Phone アプリの 1 つに MVVM を実装しようとしていますが、そのアプリは大きくなっています。Model クラスで以下のコードを試しました。ユーザーが「最新のエントリ」ボタンをクリックすると、サービスに接続してメソッドを非同期的に実行するシナリオをどのように処理できるかを知りたいです。データが返されたら、私はしなければなりませんEmpName、EmpID、Address の 3 つのテキスト フィールドを持つ UI に最新のレコードを表示します。
モデル クラスのコード:
public class EmpDetailsModel:INotifyPropertyChanged
{
private string _EmpName;
public string EmpName
{
get { return _EmpName; }
set {
if (value != _EmpName)
{
_EmpName = value;
RaisePropertyChanged("EmpName");
}
}
}
private string _EmpId;
public string EmpId
{
get { return _EmpId; }
set {
if (value != _EmpId)
{
_EmpId = value;
RaisePropertyChanged("EmpId");
}
}
}
private string _Address;
public string Address
{
get { return _Address; }
set {
if (value != _EmpId)
{
_EmpId = value;
RaisePropertyChanged("Address");
}
}
}
#region myfirstmodel inotify members
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
サービスに接続するコードは次のとおりです。
EmpAzureSer empAzureSer = new EmpAzureSer();
empAzueSer.GetLatestEntry += new GetLatestEntryCompletedEventHandler(LatestEntryCompleted);
private void LatestEntryCompleted(object sender, GetLatestEntryCompletedEventArgs e
{
//get the data from e as e.Name,e.Id and e.Address and bind them to UI.
}
xaml コードを表示:
<Button Name="FetachLAtest" Click="FetachLatest_Click"></Button>
<TextBlock Name="EmployeeName"></TextBlock>
<TextBlock Name="EmployeeID"></TextBlock>
<TextBlock Name="EmployeeAddress"></TextBlock>
リンクhttp://msdn.microsoft.com/en-us/library/windowsphone/develop/gg521153(v=vs.105).aspxをたどっていました。
それは非常に役に立ちましたが、サービスに接続するコードをどこに置くべきか知りたいです(モデル?またはビューモデル?ビューモデルはどのように見えるべきですか?