2012-02-29 14 views
0

'メッセージ/コメント'の表示を実装しようとしています。WPF MVVMアプリケーションでObservableCollectionsを更新する

ビューはObservableCollection(これらは投稿)にバインドされたListBoxで構成されています。私はまた、リストボックスのSelectedItemを双方向バインドしています。

現在選択されている投稿の返信は、別のObservableCollectionにも格納されます。このコレクションのすべてのアイテムは、選択したメッセージの直後に投稿コレクションに挿入する必要があります。

プロパティ内のすべてが正常に更新されます。そのリストがレンダリングされると、その糞便がファンに当たる。

新しい投稿が選択されるたびに、「.Add()」ではなく「.Insert()」を実行する必要があります。これは、数千の投稿と数百のコメントを扱うときでさえも、[許容できない]パフォーマンス上の罰則を受ける。

私はこれをやりたいと思います: 'PostsCollection = newObservableCollectionWithPostsAndComments'しかし、それはリストボックス全体をリフレッシュさせ、SelectedItemを選択解除にします。

リストボックスを再描画せずにリストボックスにバインドされたObservableCollection <にアイテムを動的に挿入する処理はどうしますか?

*脇

EDIT表示されている新しいアイテムから:私はコーディングエラーを作ったわずかな感覚を持っているが、私はここにすべてのソースコードを表示することはできませんが。私が望むものが可能なのかどうか教えてくれれば、それはすばらしいでしょう。

+1

あなたが直面している問題を再現するサンプルテストコードを投稿すると役に立ちます。 –

+0

'ICollectionView'を使用してバインドそれから降順にソートしますか? –

答えて

0

問題を正しく理解していれば、Observableコレクション内のアイテムの挿入に問題があります。実際、各挿入後、コレクションはコレクション変更イベントを呼び出し、UIは再描画されます。

解決方法の1つは、ObservableCollectionExのようなObservable Collectionから新しいクラスを派生させることです.AddRange(IEnumerableアイテム)のようなメソッドで複数のアイテムをコレクションに追加しますが、コレクションの変更イベントは1つだけ発生させます。例は

http://xcalibursystems.com/2013/12/making-a-better-observablecollection-part-1-extensions/

その他の方法で、おそらくないクリーンな1下のリンクを、項目の結果セットで新しいのObservableCollectionを作成し、リストボックスののItemsSourceが結合する性質に割り当てることです。また、INotifyPropertyChangedを実装する場合、プロパティのPropertyChangedイベントを発生させることを忘れないでください。

関連する問題