在WPF DataGrid中保留用户定义的排序顺序

Noe*_*lle 7 c# sorting wpf xaml wpfdatagrid

我有一个WPF DataGrid,其中填充了DataSet中的数据.我已经CanUserSortColumns设定为.

是否可以保留用户在刷新网格时指定的排序?我保留了使用的项目

  object selectedItem = dgInvoiceHeads.SelectedItem;
Run Code Online (Sandbox Code Playgroud)

在刷新之前然后放置

 dgInvoiceHeads.SelectedItem = selectedItem;
Run Code Online (Sandbox Code Playgroud)

刷新后发生.

但我似乎无法保持指定的排序.

Noe*_*lle 3

我的一位同事想出了这个办法。它似乎工作正常。唯一的问题是我认为 DataGrid 中的列标题需要与数据库中的列标题相同。

string sortHeader;
string prevSortHeader;
SortDescription sd;

private void dgInvoiceHeads_Sorting(object sender, DataGridSortingEventArgs e) {
  sortHeader = e.Column.Header.ToString();

  if (sortHeader == prevSortHeader) {
    sd = new SortDescription(sortHeader, ListSortDirection.Descending);
  }
  else {
    sd = new SortDescription(sortHeader, ListSortDirection.Ascending);
  }
  prevSortHeader = sortHeader;
}
Run Code Online (Sandbox Code Playgroud)

华泰

  • 您可以通过使用列实例中的 SortMemberPath 而不是 Header 属性来解决标题必须与类成员相同的问题。`sortHeader = e.Column.SortMemberPath` (3认同)