Wpf 初始数据网格排序
我有一个用户控件,它包含一个WPF工具包Wpf 初始数据网格排序,wpf,user-controls,wpfdatagrid,Wpf,User Controls,Wpfdatagrid,我有一个用户控件,它包含一个WPF工具包DataGrid。此控件在我的应用程序中的许多不同位置使用。网格不知道将显示的数据类型。是否有一种方法可以按照升序按第一列对网格进行初始排序,而不管网格中填充了什么数据?我认为我不能使用CollectionViewSource,因为我不知道绑定到第一列的属性的PropertyName 您可以连接到一个事件: dataGrid.AutoGeneratedColumns += dataGrid_AutoGeneratedColumns; 并对第一列进行排序:
DataGrid
。此控件在我的应用程序中的许多不同位置使用。网格不知道将显示的数据类型。是否有一种方法可以按照升序按第一列对网格进行初始排序,而不管网格中填充了什么数据?我认为我不能使用CollectionViewSource
,因为我不知道绑定到第一列的属性的PropertyName
您可以连接到一个事件:
dataGrid.AutoGeneratedColumns += dataGrid_AutoGeneratedColumns;
并对第一列进行排序:
void dataGrid_AutoGeneratedColumns(object sender, EventArgs e)
{
var firstCol = dataGrid.Columns.First();
firstCol.SortDirection = ListSortDirection.Ascending;
dataGrid.Items.SortDescriptions.Add(new SortDescription(firstCol.SortMemberPath, ListSortDirection.Ascending));
}
我建议您创建一个派生的独立的DataGrid
控件,将此逻辑放在那里,并使用新控件来避免每次重复代码
public class CustomDataGrid : DataGrid
{
public DynamicDataGrid()
{ ... }
...
}
谢谢你的回答。第一列现在表示数据是按该列排序的,因为排序方向指示器显示在该列上,但在我实际单击该列之前,数据仍然没有排序。你是对的,我忘了将SortDescription添加到集合中,我更新了代码,现在应该可以工作了。如果该列不是自动生成的,在为目标dataGrid设置DataContext之后,仍然可以使用dataGrid_AutoGeneratedColumns中的代码。