如何允许用户对LINQ到SQL WPF数据网格上的列进行排序?
我已成功地使用从Northwind数据库创建的LINQ to SQL类设置了WPF Datagrid,并使用以下代码绑定WPF网格:如何允许用户对LINQ到SQL WPF数据网格上的列进行排序?,wpf,linq,datagrid,Wpf,Linq,Datagrid,我已成功地使用从Northwind数据库创建的LINQ to SQL类设置了WPF Datagrid,并使用以下代码绑定WPF网格: var customers = from c in _db.Customers select c; TheDataGrid.ItemsSource = customers; 我可以从左向右移动列,删除列,等等 但是,当我单击列标题对其进行排序时,在我的输出窗口中会出现大约20对错误,似乎每列都有一对错误: System.Windo
var customers = from c in _db.Customers
select c;
TheDataGrid.ItemsSource = customers;
我可以从左向右移动列,删除列,等等
但是,当我单击列标题对其进行排序时,在我的输出窗口中会出现大约20对错误,似乎每列都有一对错误:
System.Windows.Data错误:1:无法创建到的默认转换器
在之间执行“双向”转换
类型
'System.Data.Linq.EntitySet'1[TestDataGrid566.Model.Order]'
和“System.String”。考虑使用
绑定的转换器属性。
BindingExpression:Path=Orders;
DataItem='Customer'
(HashCode=4925117);目标元素是
“TextBlock”(名称=“”);目标属性
是“文本”(键入“字符串”)
System.Windows.Data错误:5:BindingExpression生成的值为
对目标属性无效。;
Value='System.Data.Linq.EntitySet`1[TestDataGrid566.Model.Order]'
BindingExpression:Path=Orders;
DataItem='Customer'
(HashCode=4925117);目标元素是
“TextBlock”(名称=“”);目标属性
是“文本”(键入“字符串”)
当我创建LINQtoSQL类时,我只是将所有表从数据库拖到模型设计器并保存,因此这些类都是默认代码
这些错误告诉了我什么?我只是没有正确设置LINQ to SQL类,还是这指向了更深层次的问题?我认为您应该将查询转换为列表
var customers = from c in _db.Customers
select c;
TheDataGrid.ItemsSource = customers.ToList(); //note the .ToList() call
否则,DataGrid会尝试重新枚举查询,这是一个坏主意,因为查询结果是延迟加载的集合。我认为应该将查询转换为列表
var customers = from c in _db.Customers
select c;
TheDataGrid.ItemsSource = customers.ToList(); //note the .ToList() call
否则,DataGrid会尝试重新枚举查询,这是一个坏主意,因为查询结果是延迟加载的集合。我仍然会收到错误,但至少.ToList()允许它排序,谢谢。如果我正确读取了错误消息,这是绑定中的一个问题。例如,您的Linq2Sql类可能设置得很好(看起来您有一个实体“Customer”,它有一个属性“Orders”,这是一个Order实体的集合),但您试图将该集合绑定到一个-continuedTextBlock文本属性,而该属性无法绑定,因此会发出这些警告。是的,要么你表示你想绑定到Orders集合属性,要么你使用了AutoGenerateColumns选项(该选项不应该存在,在几乎任何实际情况下都是无用的)。我试图关闭autoGeneratecolumns并定义我自己的,但我得到了这个绑定错误:我仍然得到了错误,但至少.ToList()允许它排序,谢谢。如果我正确读取了错误消息,则绑定中存在问题。例如,您的Linq2Sql类可能设置得很好(看起来您有一个实体“Customer”,它有一个属性“Orders”,这是一个Order实体的集合),但您试图将该集合绑定到一个-continuedTextBlock文本属性,而该属性无法绑定,因此会发出这些警告。我会对此进行调查。是的,要么您表示要绑定到Orders集合属性,要么您使用了AutoGenerateColumns选项(该选项不应该存在,在几乎任何实际情况下都是无用的)。我试图取下AutoGenerateColumns并定义我自己的,但出现了以下绑定错误: