WPF中的DataGrid的列排序的两种方式
前言
代码中涉及到的东西,简单记录,并没有很高深的逻辑,实现起来也比较简单,不知道怎么做的人可以作为简单参考
第一种,在XAML中实现
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding PatientBirthday, StringFormat=yyyy/MM/dd}"
Header="出生日期 " CanUserSort="True" SortMemberPath="PatientBirthday"/>
</DataGrid.Columns>
其中最重要的两个属性分别是CanUserSort,SortMemberPath。
CanUserSort = True时,用户可以点击列头实现排序功能,=false的时候则该列不可以排序
如果想要禁止所有列排序,则需要设置DataGrid 中 CanUserSortColumns=“False”。
SortMemberPath可以设置排序的变量,根据设置的变量进行排序。
或者不写也可以,可以起到默认的排序效果。
缺点是只能排序当前页面。后面的页面起不到排序效果
第二种,可以通过方法设置排序
通过 Sorting=“PatientDataGrid_Sorting” 方法实现
private void PatientDataGrid_Sorting(object sender, DataGridSortingEventArgs e)
{
写自己的逻辑,方便自定义排序
string str = e.Column.SortMemberPath;
e.Handled = true;
}
由 __e.Column.SortMemberPath__可以知道现在的点击的排序列
__ e.Handled = true__时 ,会终止排序,设置为false的时候,可以正常排序。
结尾
本文章主要是记录手边的代码,可能没那么复杂,如果有更好的想法或者看法,希望大家能多提提意见