2
我有一个用户控件,其中包含一个WPF工具包DataGrid
。此控件在我的应用程序的许多不同的地方使用。网格对于将显示的数据类型没有任何知识。有没有一种方法可以按照升序排列第一列的网格,而不管网格填充了什么数据?我不认为我可以使用CollectionViewSource
,因为我不知道绑定到第一列的属性PropertyName
。初始DataGrid排序
我有一个用户控件,其中包含一个WPF工具包DataGrid
。此控件在我的应用程序的许多不同的地方使用。网格对于将显示的数据类型没有任何知识。有没有一种方法可以按照升序排列第一列的网格,而不管网格填充了什么数据?我不认为我可以使用CollectionViewSource
,因为我不知道绑定到第一列的属性PropertyName
。初始DataGrid排序
你可以挂钩一个事件:
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()
{ ... }
...
}
感谢您的回答。第一列现在指示数据按该列进行排序,因为排序方向指示器显示在该列上,但直到实际点击列时数据仍然未排序。 – ihatemash
你是对的,我忘了将SortDescription添加到集合中,我更新了代码,它现在应该可以工作。 – doblak
如果该列不是自动生成的列,那么在为目标DataGrid设置DataContext后,您仍然可以使用dataGrid_AutoGeneratedColumns中的代码。 – laishiekai