【问题标题】:Initial DataGrid Sorting初始 DataGrid 排序
【发布时间】:2012-02-15 05:16:40
【问题描述】:

我有一个包含 WPF 工具包DataGrid 的用户控件。此控件在我的应用程序中的许多不同位置使用。网格不知道将显示的数据类型。无论网格中填充了什么数据,有没有办法按第一列按升序对网格进行初始排序?我认为我不能使用CollectionViewSource,因为我不知道绑定到第一列的属性的PropertyName

【问题讨论】:

    标签: wpf user-controls wpfdatagrid


    【解决方案1】:

    你可以挂钩一个事件:

    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中的代码。
    猜你喜欢
    • 2010-09-18
    • 2016-07-10
    • 2019-03-16
    • 2015-08-18
    • 2011-03-15
    • 1970-01-01
    • 2013-02-08
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多