有人可以为这个问题提供一些指导:
我有一个绑定到 DataTable 的 DataGrid。
相关 XAML 和代码:
<DataGrid Name="dataGrid1" IsReadOnly="True" ItemsSource="{Binding}"
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
<DataGridTextColumn Header="Path" Binding="{Binding Path=Path}" />
</DataGrid.Columns>
dataGrid1.DataContext = gridData.dt; // this is a DataTable with 3 columns.
第三个 dt 列未显示在网格上。它被用作 id。
数据表按第一列排序并显示内容。用户可以通过单击名称或路径列/标题对其进行排序,并且视觉排序是/显示正常。问题是当我通过选择特定行来检查网格的数据时,DataTable 的数据仍然未排序。
我的问题是,在用户对其中一列进行排序时更新网格基础数据的最佳方法是什么?(这需要在正确的列上对 DataTable 进行排序)
这是我观察到的:
- 在 DataGridColumnHeader 上添加 Click 事件处理程序会触发该事件。我观察到 columnHeader.SortDirection 的值(在发件人中)是当前值,而不是目标值。说给定的列排序顺序经过这些阶段是否正确:null->升序降序->升序升序降序
IE 通过知道当前状态,可以确定下一个状态。
- 我可以在 DataGridColumnHeader 的 SortDirection 属性中放置一个触发器,以查找 Ascending/Descending/null 但是然后呢?我可以对此执行代码吗?如果是这样,你能告诉我一个代码片段吗?
我浏览过类似的帖子并尝试执行以下操作:
通过将我的 DataGrid 绑定到一个来试验 CollectionViewSource。作为一个实验,我捕获了列标题单击事件并强制对列进行排序。这没有用。(我的实现可能是错误的?)
我将 SortedMemberPath= "xx" 添加到我的 XAML 到特定的 DataGridTextColumn 条目中。
非常感谢任何帮助。