6

現在、DataGrid.ItemsSourceをカスタムRowCollectionにバインドしようとしています。これは、IListとINotifyCollectionChangedを実装しています。

Public Class RowCollection(of T)
Implements IList(Of T)
Implements INotifyCollectionChanged
Private _List As New List(Of T)
...

(VBコードについては申し訳ありませんが、すべてのコードをすぐにC#に変換します。)

クラスは既存のCLRコレクションから派生していないことに注意してください。レコードページングを実装するためにGetItemAtをオーバーライドする必要があるため、独自のクラスを作成しました。コレクションは、独自のプライベートリストにオブジェクトを内部的に追加および削除します_List

これで、DataGridでアイテムを表示できますが、セルをダブルクリックして編集するとすぐに、InvalidOperationException:'EditItems'は使用できません。

私の質問は、コレクションをDataGridと完全に互換性を持たせるために、他にどのようなインターフェイスを実装する必要があるかということです。

4

1 に答える 1

3

ここでは、次の内容を読むことができます。

編集

デフォルトでは、アイテムを DataGrid で直接編集できます。編集を正しくコミットおよびキャンセルできることを保証するために、DataGrid 内のオブジェクトは IEditableObject インターフェイスを実装する必要があります。または、IsReadOnly プロパティを true に設定して、DataGrid での編集を無効にすることもできます。

IEditableObject インターフェイスはこちらIEditableCollectionViewこちら もご覧ください

于 2011-03-03T15:51:46.307 に答える