Im actualmente tratando de obligar a la DataGrid.ItemsSource a un RowCollection personalizada, que implementa IList y INotifyCollectionChanged:colección personalizada se estrella en la cuadrícula de datos Editar
Public Class RowCollection(of T)
Implements IList(Of T)
Implements INotifyCollectionChanged
Private _List As New List(Of T)
...
(Lo siento por el código VB, voy a estar traduciendo todo mi código para C# pronto.)
Observe que la clase no proviene de de ninguna colección existente de CLR. Creé mi propia clase porque necesito anular GetItemAt, para implementar la búsqueda de registros. La colección internamente agrega y quita objetos de su propia lista privada _List
.
Ahora, puedo ver los elementos en un DataGrid, pero tan pronto como hago doble clic en una celda para editar, recibo una InvalidOperationException: 'EditItems' no está disponible..
Mi pregunta es, ¿qué otras interfaces debo implementar para hacer que mi colección sea totalmente compatible con DataGrid?
1 Recuerdo que tenía el mismo problema, pero no han tratado de cavar en ella porque no tenía el tiempo. Por lo que recuerdo, terminé usando ObservableCollection como ItemsSource sincronizándolos con mis propias colecciones. Tengo curiosidad si alguien tiene una solución. –
HCL
Creo que lo que estás tratando de hacer se puede hacer de una manera más simple. Utilice una colección existente y luego coloque DataGridView en modo virtual e implemente el controlador CellValueNeeded (object, ... CellEventArgs). Enlace: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.virtualmode.aspx El propósito del modo virtual es admitir el tipo de escenario de paginación que tiene en mente. –
Lo siento. Olvidé mencionar que estoy usando WPF DataGrid en WPF Toolkit para .Net 3.5. El enlace que mencionaste es sobre WinForms. –