"Item []"のPropertyChangeを上げるObservableCollectionの目的は何ですか?"Item []"のPropertyChangeを上げるObservableCollectionの目的は何ですか?
INotifyCollectionChangedを実装するクラスがある場合は、これを行う必要がありますか?
WPFコントロールはこの「Item []」のPropertyChangeを何とか使用しますか?
"Item []"のPropertyChangeを上げるObservableCollectionの目的は何ですか?"Item []"のPropertyChangeを上げるObservableCollectionの目的は何ですか?
INotifyCollectionChangedを実装するクラスがある場合は、これを行う必要がありますか?
WPFコントロールはこの「Item []」のPropertyChangeを何とか使用しますか?
ObservableCollection
は、INotifyCollectionChanged
とINotifyPropertyChanged
の両方を実装します。
INotifyPropertyChanged
はObservableCollection
のプロパティは、その要素("Count"
)の数またはコレクションのインデクサーを介してアクセス可能要素("Item[]"
)のように、変更されたことを示すために使用されます。さらに、ObservableCollection
はどの要素が正確にどのように変更されたかを示すINotifyCollectionChanged
を実装しています。
Mono implementation of ObservableCollection
をご覧になり、ObservableCollection
の正確な内容を確認してください。例えば、ここにInsertItem
方法です:あなたがあなた自身のObservableCollection
様のコレクションクラスを実装する場合
protected override void InsertItem (int index, T item)
{
CheckReentrancy();
base.InsertItem (index, item);
OnCollectionChanged (new NotifyCollectionChangedEventArgs (
NotifyCollectionChangedAction.Add, item, index));
OnPropertyChanged (new PropertyChangedEventArgs ("Count"));
OnPropertyChanged (new PropertyChangedEventArgs ("Item[]"));
}
が、それはINotifyCollectionChanged
とINotifyPropertyChanged
の両方を実装するための適切な方法と思われます。
はいWPFおよびSilverlightコントロールは、PropertyChangeイベントを使用してUIコントロールを更新します。これにより、ListViewまたはDataGridのようなものが、バインドされたObservableCollectionまたはINotifyCollectionChangedを実装する他のコレクションの変更に応じて自動的に更新されます。
編集:実装に関しては、一般的に独自のコレクションを実装する必要はないので、INotifyCollectionChangedについて心配する必要はありません。 ObservableCollectionで使用されるクラスに対しては、INotifyPropertyChangedを実装する必要があります。これにより、PropertyChangedイベントが更新されたときにオブジェクトが自動的に変更を表示できるようになります。
私は混乱しています。あなたは、WPFが 'Item []' 'のPropertyChangeを使用していると言っていますが、' CollectionChanged 'を実装する必要があります。 – jyoung