2011-01-31 4 views
0

私は自分のアプリケーションにSilverlight 4とMVVMパターンを使用しています。私は1つのページにバインドされているリストボックスを持っていますone.xamlとそのviewmodelはoneviewmodel.csです。これは私のアルバムコレクションを読み込むページです。私はそのページに新しいアルバムを追加するためのページをポップアップするボタンを持っています。そのページがtwo.xamlで、そのビューモデルがtwoViewModel.csであるとします。ObservableCollection <someentity>リフレッシュしない

context.albums.add(somealbum); 

とchanges.Theアルバムが追加されますと、私はSQL Serverのレコードを見ることができ提出 - :このページでは私は、RIAサービスを呼び出します。しかし、ポップアップが閉じられると、リストボックスは失効したデータを表示します。ちょうど追加された新しいエンティティを読み込むためにサーバにリクエストをもう一度行う必要がありますか?したがって、本質的に私はエンティティを再び読み込むためにメッセージパターンと要求oneviewmodel.csを使用する必要があります。これは正しい方法ですか?

これはロードアルバムエンティティの私の方法である: -

var qry = AlbumContext.GetAlbumsQuery(_profile.UserId); 
      AlbumContext.Load<Album>(qry, new Action<System.ServiceModel.DomainServices.Client.LoadOperation<Album>>(albums => { 

       if (GetAlbumsComplete != null) 
       { 

        if (albums.Error == null) 
        { 
         GetAlbumsComplete(this, new EntityResultArgs<Album>(albums.Entities)); 
        } 
        else 
        { 
         GetAlbumsComplete(this,new EntityResultArgs<Album>(albums.Error)); 
        } 
       } 

      }), null); 

これはショーンWildermuthと同じパターンとクラスを使用しています。事前に

感謝:)

答えて

1

あなたは再びサーバーからすべてをロードする必要はありませんが、あなたはあなたのObservableCollectionに新しいアルバムを追加する必要があります。これまではDomainContextにのみ追加していました。 次の2つのオプションのいずれかを行うことができます:

1)

collection.Add(somealbum); 

または

2)私はあなたがGetAlbumsComplete()でのObservableCollectionを埋めることを想定して、コレクションに直接新しいアルバムを追加します。 ObservableCollectionがDomainContext.Albumsの内容で満たされるように、その部分をもう一度実行してください。

関連する問題