2011-09-14 7 views
3

私はObservableCollectionに詳しくはありませんが、実装することで追加/削除/置換/クリア操作に基づいてカスタムコレクション状態を更新する便利な方法が提供されているようです。ObservableCollection <T>はUI以外のシナリオに適しています

しかし、私が見てきた例では、通常WPF/WinFormsデータバインディングのコンテキストでそれを参照しています。

これを実装することで、私が気をつけなければならない不要なオーバーヘッドや依存関係が生じますか?私のシナリオでは(追加/削除などに基づいてコレクションに追加した拡張状態を単純に更新する)Collectionや同様のものを実装し、拡張/削除/置換/クリアの各操作をオーバーライドして拡張状態を更新する方が良いでしょうか?

答えて

2

ObservableCollectionがUIに関連付けられていないことが多い理由は、MVVMパターンを使用している場合は、ビューの更新に柔軟性があるためです。私はそれが非UIコードでそれを使用するのを妨げるべきではないと言いましたが、 perfromanceに関連する情報については、1を参照してください。

+0

おかげさまでSandeep、パフォーマンスデータも面白いです。とても有難い。 – Chris

2

WPF/WinFormsアプリケーションの外部で使用する場合、そのコレクションに強い依存関係はありません。それは便利なインターフェイスを実装するだけです。

+0

ご返信ありがとうございますTejs ..私はこれが事実であることを望んでいました。 – Chris

0

ObservableCollectionがWPFも導入されたバージョン3.0のフレームワークに導入されたとしても、UI概念との強力なリンクはありません。あなたがMSDN documentationを読む場合にも、タイプの説明は、どのような方法でUIコンテキストを参照していない:

はアイテムが追加、削除、またはリスト全体が更新されたとき取得したときに通知を提供して動的なデータコレクションを表し。

実際、既にINotifiyPropertyChangedを実装しているため、UIシナリオにはうってつけです。あなたの質問に答えるために、はい、UI以外のシナリオでObservableCollectionを使用することは全く問題ありません。

+0

ありがとうUcodia ..私はポイントを作るためにいくつかのパフォーマンスデータが含まれているとしてSandeepsの答えを受け入れました。あなたは、MSDNのドキュメントはそれが適切だと私を導いたと言いますが、あなたが私が確かめたいと思ったときにそれがUIのために使用されている非常に多くの例があります。 – Chris

関連する問題