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

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

我一直在寻找列标题点击事件 - 没有运气;我试图获取当前对网格进行排序的列的标题 - nada;我尝试在 DataGridTextColumn 模板上使用“Click”EventSetter - 不支持。

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

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

DataRow selectedRow = my_data.Tables[0].Rows[my_grid.SelectedIndex];
MessageBox.Show(selectedRow["ItemName"]);

最佳答案

排序是应用于datatable的DefaultView,所以不会直接应用于Datatable。访问排序后的表使用

DataTable.DefaultView.ToTable()

关于wpf - 使用 WPF DataGrid 对 DataTable 进行排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5783634/

10-15 03:17