基于单击列标题在WPF中对数据网格进行排序

Posted

技术标签:

【中文标题】基于单击列标题在WPF中对数据网格进行排序【英文标题】:Sorting datagrid in WPF based on click of column header 【发布时间】:2016-10-12 23:13:11 【问题描述】:

我正在使用绑定到可观察集合的数据网格。网格分为页面,每页包含 50 条记录。最初,只有前 3 个页面加载,然后在用户滚动剩余页面时开始加载数据。

问题是当我点击列标题对数据进行排序时,即使有前2页的数据,也只排序第一页的数据。当我再次单击列标题时,所有 100 行,即两个页面的数据都被排序,而不仅仅是第一页。 谢谢!

【问题讨论】:

【参考方案1】:

这就是我在我的应用程序中完成 DataGrid 列标题排序的方式-

<dgCP:DataGridTemplateColumn  SortMemberPath="CompleteDate" Header="Complete Date" CanUserSort="true">
            <dgCP:DataGridTemplateColumn.CellTemplate >
                    <DataTemplate>
                        <TextBlock>
                            <TextBlock.Text>
                                <Binding Path="CompleteDate"  StringFormat="0:MM/dd/yyyy"/>
                            </TextBlock.Text>
                        </TextBlock>
                    </DataTemplate>
                </dgCP:DataGridTemplateColumn.CellTemplate>
            </dgCP:DataGridTemplateColumn>

看看这是否有帮助。

【讨论】:

我已经尝试过了,但这并不能解决我的问题。数据网格对所有行进行排序,直到我滚动到网格末尾。也许问题是因为将“EnableRowVirtualization”设置为 true。如果此属性设置为 false,则加载行的性能会受到影响,因此我只能将其设置为 true,但排序不起作用。有没有其他办法,请指教。

以上是关于基于单击列标题在WPF中对数据网格进行排序的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF 中对 DataGrid 进行预排序

在 WPF 数据网格、组合框模板列上单击编辑

WPF4 Datagrid 不对列标题进行排序

如何从数据网格中获取已排序的项目源

以编程方式对 wpf 数据网格进行排序

清除排序描述后如何删除wpf网格排序箭头