0

私は1つのWPFアプリを作成しました。かなりシンプルなアプリ。これはうまく機能し、今日では LOB アプリとして頻繁に使用されています。今、私は古い VB6 アプリの大幅な書き直しの作業を開始し、それを WPF アプリにもします。最初のアプリに取り組んだとき、INotifyPropertyChanged インターフェイスと、それが WPF/Silverlight データ バインディングにとっていかに重要であるかを知りました。私の懸念は、かなり前に、古いVB6アプリ用に、何年も前にVB6で書いた古い中間層コンポーネントを置き換えることを目的としたWCFサービスを書いたことです。私が作成した WCF サービスは、ADO.NET データセットを返します。正直なところ、私は何年もそれらを使用しており、それらに慣れているからです。しかし、この新しいアプリに取り組み始めた今、WCF サービスについて非常に心配しています。

それで、私は他のものを見始めました。今、私は Entity Framework を見ています。Julia Lerman の本「Programming Entity Framework: Second Edition」を使用していますが、非常に有望に見えます。前の章で彼女が書いた EDM アセンブリを使用する WPF アプリの例を調べました。アセンブリへの参照を含めると CollectionViewSource が得られ、少なくとも私には、それらが INotifyPropertyChanged インターフェイスとほぼ同じように動作するように見えます。

私の質問はこれです: CollectionViewSource クラスは INotifyPropertyChanged インターフェイスを実装していますか? MSDN のドキュメントを調べてみましたが、直接そうは言っていませんが、DependencyObject クラス CollectionViewSource が INotifyPropertyChanged インターフェイスと同じ機能を複製しているのか、それとも CollectionViewSource がそれを実装しているのか疑問に思っています。

4

2 に答える 2

1

CollectionViewSource の MSDN doc には、クラス宣言としてこれが含まれていることがわかります。

Public Class CollectionViewSource _
    Inherits DependencyObject _
    Implements ISupportInitialize, IWeakEventListener

それもその基本クラスも INotifyPropertyChanged を実装していません。CollectionViewSourceの にバインドする場合、基になるコレクションが変更されたときに、そのメソッドをView自分で呼び出す必要があります。CVS のプロパティ (並べ替えやグループ化など) を変更すると、Refresh が自動的に呼び出されます。Refresh()

于 2011-03-22T21:31:40.860 に答える