2009-02-02 9 views
7

En un control Telerik, yo era capaz de unirse a un DataTable directamente a la ItemSource, pero cuando me cambié a la CodePlex WPFToolkitDatagrid:¿Por qué no puedo vincular WPFToolkit DataGrid ItemSource a DataTable?

<dg:DataGrid Name="theGrid"/> 
--- 
theGrid.ItemsSource = dt; 

me sale este error:

Cannot implicitly convert type 'System.Data.DataTable' to 'System.Collections.IEnumerable'. 

¿Cómo puede Ato el DataTable al WPFToolkitDataGrid?

Respuesta

3

Deberá proyectar su tabla de datos en algo que implemente IEnumerable, ya que es lo que espera DataGrid. La grilla es una implementación diferente a la versión de Telerik, por lo que es difícil esperar la misma funcionalidad en ambos.

+0

Esto funcionó, de hecho yo estaba convirtiendo de una lista a la tabla de datos para el control Telerik así que esto es aún más fácil, yo solo uso el objeto original de la lista ahora, gracias. –

4

Asumo apoyo a esta se añadirán en el futuro, pero por ahora se puede utilizar la aplicación de IListSource en DataTable. Llame al método GetList() y utilícelo como fuente de datos. Es una implementación de interfaz explícita por lo que tendrá que emitir:

var data = (myDataTable as IListSource).GetList(); 
+0

Encontré esto: http://msdn.microsoft.com/en-us/library/aa325664(VS.71).aspx, pero ¿cómo uso la implementación de IListSource en DataTable para llamar al método GetList()? –

+0

Actualicé mi publicación. –

32

puedo encontrar la manera más fácil es:

myDataGrid.ItemsSource = myDataTable.DefaultView; 

porque DefaultView implementa IEnumerable

+1

+1, el enlace a un DataView es simple y funciona muy bien, especialmente si desea poder navegar por las relaciones. – Oskar

0

En tales casos, ato ItemsSource a DataContex en XAML es decir

ItemsSource={Binding} 

y luego en código detrás de mí lo hago

theGrid.DataContext = dt 

Esto ayudará.

Cuestiones relacionadas