Почему я не могу привязать WPFToolkit DataGrid ItemSource к DataTable?
-
20-08-2019 - |
Вопрос
В Telerik
контроль, я смог связать DataTable
непосредственно к ItemSource
, но когда я переключился на Codeplex WPFToolkit
Datagrid
:
<dg:DataGrid Name="theGrid"/>
---
theGrid.ItemsSource = dt;
Я получаю эту ошибку:
Cannot implicitly convert type 'System.Data.DataTable' to 'System.Collections.IEnumerable'.
Как я могу связать DataTable
к томуWPFToolkit
DataGrid
?
Решение
Вам нужно будет спроецировать свой datatable во что-то, что реализует IEnumerable, поскольку именно этого ожидает DataGrid.Grid - это реализация, отличная от версии Telerik, поэтому трудно ожидать одинаковой функциональности от обеих.
Другие советы
Я нахожу, что самый простой способ - это:
myDataGrid.ItemsSource = myDataTable.DefaultView;
потому что DefaultView реализует IEnumerable
Я предполагаю, что поддержка для этого будет добавлена в будущем, но пока вы можете использовать реализацию IListSource
на DataTable
.Позвоните в GetList()
метод и используйте его в качестве своего источника данных.Это явная реализация интерфейса, поэтому вам нужно будет привести:
var data = (myDataTable as IListSource).GetList();
В таких случаях я привязываю ItemsSource к DataContex в XAML, т. е.
ItemsSource={Binding}
и затем в codebehind я делаю
theGrid.DataContext = dt
Это поможет.