wpf中ListView控件点击列头排序功能实现(超简洁实用)

7 篇文章 0 订阅
1 篇文章 0 订阅

 .xaml文件中的主要代码

 <ListView Name="lvMeasureData" GridViewColumnHeader.Click="Sort_Click"
  SelectionChanged="lvMeasureData_SelectionChanged" >
                                    <ListView.View>
                                        <GridView >
                                            <GridViewColumn Header="测量日期" DisplayMemberBinding="{Binding MeasureDate,StringFormat='yyyy/MM/dd HH:mm'}" Width="180"></GridViewColumn>
                                            <GridViewColumn Header="测量名称" DisplayMemberBinding="{Binding MeasureName}" Width="200"></GridViewColumn>
                                            <!--<GridViewColumn Header="组织结构" DisplayMemberBinding="{Binding PersonnelCompany}" Width="100"></GridViewColumn>-->
                                            <GridViewColumn Header="被测人" DisplayMemberBinding="{Binding PersonnelName}" Width="120"></GridViewColumn>
                                            <GridViewColumn Header="测量模式" DisplayMemberBinding="{Binding MeasureModString}" Width="0">
                                            </GridViewColumn>
                                            <GridViewColumn Header="类型" DisplayMemberBinding="{Binding MeasureTypeString}" Width="80"></GridViewColumn>
                                        </GridView>
                                    </ListView.View>
                                </ListView>

.xmal.cs文件中的排序方法sort()

        #region listview 控件点击列头排序方法
        //
        private ListSortDirection _sortDirection;
        private GridViewColumnHeader _sortColumn;
        private void Sort_Click(object sender, RoutedEventArgs e)
        {
            
            GridViewColumnHeader column = e.OriginalSource as GridViewColumnHeader;
            if (column == null||column.Column==null)
            {
                return;
            }

            if (_sortColumn == column)
            {
                // Toggle sorting direction 
                _sortDirection = _sortDirection == ListSortDirection.Ascending ?
                                                   ListSortDirection.Descending :
                                                   ListSortDirection.Ascending;
            }
            else
            {
                // Remove arrow from previously sorted header 
                if (_sortColumn != null&& _sortColumn.Column!=null)
                {
                    _sortColumn.Column.HeaderTemplate = null;
                    _sortColumn.Column.Width = _sortColumn.ActualWidth - 20;
                }

                _sortColumn = column;
                _sortDirection = ListSortDirection.Ascending;
                column.Column.Width = column.ActualWidth + 20;
            }

            if (_sortDirection == ListSortDirection.Ascending)
            {
                column.Column.HeaderTemplate = Resources["ArrowUp"] as DataTemplate;
            }
            else
            {
                column.Column.HeaderTemplate = Resources["ArrowDown"] as DataTemplate;
            }

            string header = string.Empty;

            // if binding is used and property name doesn't match header content 
            Binding b = _sortColumn.Column.DisplayMemberBinding as Binding;
            if (b != null)
            {
                header = b.Path.Path;
            }

            ICollectionView resultDataView = CollectionViewSource.GetDefaultView(
                                                       (sender as ListView).ItemsSource);
            resultDataView.SortDescriptions.Clear();
            resultDataView.SortDescriptions.Add(
                                        new SortDescription(header, _sortDirection));
        }
        #endregion

运行程序,点击列头发现已实现排序功能,O(∩_∩)O哈哈~欢迎提问和指正

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值