0

私はWPFを使用しており、egと呼ばれるカスタムクラスを持っています. このように使用される「CustomClass」オブザーバブル コレクション。この OC にバインドされたデータ グリッドがあり、データが表示され、すべて問題ありませんが、observablecollection 内のアイテムのいずれかが更新されても、基になるグリッドはそれに応じて更新されません。

以前は、エンティティ データ モデルから直接型を使用して observablecollections を作成していましたが、これはうまく機能しますが (表示/更新など)、カスタム クラスを使用する場合はそうではありません。

更新を可能にするために、カスタム クラス内でサポートする必要があるインターフェイスまたは何かがありますか?

ありがとう。

ジェームズ。

4

1 に答える 1

1

ObservableCollectionコレクション内のオブジェクトへの変更ではなく、コレクションへの変更を追跡します。

個々のオブジェクトの変更を追跡するには、それらにINotifyPropertyChangedを実装させる必要があります。

また、コレクション内のアイテムが変更されたときにイベントを発生させたい場合CollectionChangedは、次のようにその機能を自分で追加する必要があります。

public MyConstructor()
{
    MyObservableCollection = new ObservableCollection<MyItem>();
    MyObservableCollection.CollectionChanged += MyObservableCollection_CollectionChanged;
}

void MyObservableCollection_CollectionChanged(object sender, CollectionChangedEventArgs e)
{
    if (e.NewItems != null)
    {
        foreach(MyItem item in e.NewItems)
        {
            MyItem.PropertyChanged += MyItem_PropertyChanged;
        }
    }

    if (e.OldItems!= null)
    {
        foreach(MyItem item in e.OldItems)
        {
            MyItem.PropertyChanged -= MyItem_PropertyChanged;
        }
    }
}

void MyItem_PropertyChanged(object sender, PropertyChange e)
{
    RaisePropertyChanged("MyObservableCollection");
}
于 2013-02-08T13:10:36.277 に答える