【发布时间】:2012-02-15 05:16:40
【问题描述】:
我有一个包含 WPF 工具包DataGrid 的用户控件。此控件在我的应用程序中的许多不同位置使用。网格不知道将显示的数据类型。无论网格中填充了什么数据,有没有办法按第一列按升序对网格进行初始排序?我认为我不能使用CollectionViewSource,因为我不知道绑定到第一列的属性的PropertyName。
【问题讨论】:
标签: wpf user-controls wpfdatagrid
我有一个包含 WPF 工具包DataGrid 的用户控件。此控件在我的应用程序中的许多不同位置使用。网格不知道将显示的数据类型。无论网格中填充了什么数据,有没有办法按第一列按升序对网格进行初始排序?我认为我不能使用CollectionViewSource,因为我不知道绑定到第一列的属性的PropertyName。
【问题讨论】:
标签: wpf user-controls wpfdatagrid
你可以挂钩一个事件:
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()
{ ... }
...
}
【讨论】: