2012-03-16 15 views
0

私はSilverlight DatagridをデュアルWCFサービスを使用してデータベースからストアドプロシージャに移入しました。このサービスは、ObservableCollectionの新しいセットを20秒ごとにクライアントにプッシュします。今すぐ、私のクライアントDatagrid itemsSourceは、新しいObservableCollectionに新しいものが入るたびにリセットされます。データグリッドのitemsSourceをWCFサービスObservableCollectionに直接バインドすることが可能かどうかは不思議です。 INotifyPropertyChangedがサービスObservableCollectionから起動されると、毎回ソースをリセットし、UIが自動的に更新されます。WCF ObservableCollectionをSilverlight DataGridにバインドする

私はこの投稿http://forums.silverlight.net/t/216796.aspx/1の解決策を試しましたが、それはitemsSourceを毎回リセットするので、私が望むものではありません。

ご協力いただければ幸いです。

+0

私はあなたがINotifyPropertyChangedではなくINotifyCollectionChangedを意味すると思いますか?単純に毎回再バインドしている場合は、代わりにリストにバインドしている可能性があります。 – RichardOD

答えて

0

バインドするObservableCollectionプロパティを作成します。サービスが更新されたら、このコレクションをクリアして、サービスからリストのすべての要素を追加するか、変更が必要なものだけを通過して追加/削除します。

+0

あなたの応答をありがとう、私はこれを試してみたが、理想的なソリューションではない私はbeacause最初にコレクションをクリアし、新しいものを追加することはまだデータソースをリセットすると同じです。 「変更が必要なものだけを追加/削除する」という点では、今は古いコレクションと新しいコレクションを比較して古いコレクションを更新するforループがありますが、これはあまり効率的ではありません。あなたはこれをやるより良い方法がありますか? – sicccccc

+0

siccccccの場合、より効率的であることを自問する必要があります。コレクションをクリアして新しいアイテムを追加するか、あまり効率的ではないと言われているforループです。 – dparker

+0

こんにちはdparker、本当に知りたいのは、サービスから動的にobservablecollectionを更新できる優れた代替ソリューションがある場合です。何か提案はありますか?私は、現在のビューを失うために私のDataGridを作るので、クリアして、新しいコレクションを私のDataGridソースに追加することを避けたいです。 – sicccccc

関連する問題