为什么无法将WPFToolkit DataGrid的ItemSource绑定到DataTable?

7

在一个控件中,我能够直接将绑定到,但是当我转换到Codeplex的 时:

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

我收到了这个错误信息:

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

我该如何将DataTable绑定到WPFToolkitDataGrid

4个回答

32

我发现最简单的方法是:

myDataGrid.ItemsSource = myDataTable.DefaultView;

因为DefaultView实现了IEnumerable接口


1
+1,绑定到DataView非常简单且效果很好,特别是如果您想要能够浏览关系。 - Oskar

4

我认为将来会加入对此的支持,但现在您可以使用DataTable上的IListSource实现。调用GetList()方法并将其用作数据源。它是一个显式接口实现,因此您需要进行强制转换:

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

我找到了这个链接:http://msdn.microsoft.com/en-us/library/aa325664(VS.71).aspx 但是我该如何使用DataTable上IListSource的实现来调用GetList()方法呢? - Edward Tanguay

3

您需要将数据表投影到实现IEnumerable接口的内容中,因为这是DataGrid所期望的。这个网格是不同于Telerik版本的实现,所以很难从两者都期望相同的功能。


这个方法可行,事实上我是在将 List<Contact> 转换为 Telerik 控件的 DataTable,所以这变得更加简单了,我现在只需使用原始的 List<Contact> 对象,谢谢。 - Edward Tanguay

0
在这种情况下,我会在XAML中将ItemsSource绑定到DataContex。
ItemsSource={Binding} 

然后在代码后台我执行

theGrid.DataContext = dt

这会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接