使用WPF DataGrid对DataTable进行排序?

Ran*_*ary 3 sorting wpf datatable datagrid

好的,这让我疯了.我花了好几个小时试图找出应该是一个简单的解决方案,但我没有运气.

我在XAML页面上有一个[WPF Toolkit] DataGrid,它有一个DataTable作为其ItemsSource.我的页面上还有一个按钮,它获取DataGrid的SelectedIndex(选定行),并将其用作函数中的变量,该函数读取该索引处的绑定DataTable行并返回值.一切正常,直到我点击列标题进行排序.它对DataGrid进行排序,但不对DataTable进行排序,因此我的SelectedIndex已更改,但DataTable的索引没有更改,因此返回错误的值.

我找了Column Header点击事件 - 没有运气; 我试图得到网格当前排序的列的标题 - nada; 我试图在DataGridTextColumn模板上使用"Click"EventSetter - 不受支持.

我完全不知所措.如果WPF应该是对Windows Forms的改进,为什么删除了一些简单的功能呢?(同样愚蠢的是你必须绑定数据只是为了添加行,只是说.)我可以使用Windows Forms DataGrid并且不会有任何麻烦,但是我无法设置它的样式.

也许我没有正确地执行检查或某事......?下面是我的检索/输出代码.有人有主意吗???对你的帮助表示感谢!

DataRow selectedRow = my_data.Tables[0].Rows[my_grid.SelectedIndex];
MessageBox.Show(selectedRow["ItemName"]);
Run Code Online (Sandbox Code Playgroud)

bij*_*iju 9

排序应用于datatable的DefaultView.因此它不会直接应用于Datatable.要访问已排序的表使用

DataTable.DefaultView.ToTable()
Run Code Online (Sandbox Code Playgroud)