Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Listview排序-单击列不会执行任何操作_C#_Wpf - Fatal编程技术网

C# Listview排序-单击列不会执行任何操作

C# Listview排序-单击列不会执行任何操作,c#,wpf,C#,Wpf,我想通过单击列进行排序。Windows窗体上的一个简单任务 下面是关于 我正在使用这两个MessageBox来检查列是否被选中并且工作正常,即使使用列的内部名称,但listview保持不变。没有错误,没有排序 有什么不对?这是一个经过尝试和测试的列标题ListView排序单击代码,您不仅可以在stackoverflow上看到它,而且可以在许多扩展了ListView的存储库中看到它。我强烈怀疑您的问题与上述代码无关 当然,但我不知道我错过了什么。Listview上的Xaml?某些属性需要更改?是的

我想通过单击列进行排序。Windows窗体上的一个简单任务

下面是关于

我正在使用这两个MessageBox来检查列是否被选中并且工作正常,即使使用列的内部名称,但listview保持不变。没有错误,没有排序


有什么不对?

这是一个经过尝试和测试的列标题ListView排序单击代码,您不仅可以在stackoverflow上看到它,而且可以在许多扩展了ListView的存储库中看到它。我强烈怀疑您的问题与上述代码无关

当然,但我不知道我错过了什么。Listview上的Xaml?某些属性需要更改?是的,这可能是xaml/绑定的一些问题。我会看一看这个例子,试着让它起作用。正如我所说,这段代码在其他回购协议中重复了很多次,因此您也可以在github上找到一段代码,看看它是如何在那里实现的。另外,如果是自定义类,请确保正在排序的任何属性都按照预期的方式实现IComparable进行排序。
GridViewColumnHeader _lastHeaderClicked = null;
ListSortDirection _lastDirection = ListSortDirection.Ascending;

void GridViewColumnHeaderClickedHandler(object sender, RoutedEventArgs e)
    {
        GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;
        ListSortDirection direction;

        MessageBox.Show("Clic detected on column: " + headerClicked);

        if (headerClicked != null)
        {
            if (headerClicked.Role != GridViewColumnHeaderRole.Padding)
            {
                if (headerClicked != _lastHeaderClicked)
                {
                    direction = ListSortDirection.Ascending;
                }
                else
                {
                    if (_lastDirection == ListSortDirection.Ascending)
                    {
                        direction = ListSortDirection.Descending;
                    }
                    else
                    {
                        direction = ListSortDirection.Ascending;
                    }
                }

                string header = headerClicked.Column.Header as string;
                Sort(header, direction);

                _lastHeaderClicked = headerClicked;
                _lastDirection = direction;
            }
        }
    }

    private void Sort(string sortBy, ListSortDirection direction)
    {

        MessageBox.Show("I'm inside of the Sort!");

        ICollectionView dataView =
          CollectionViewSource.GetDefaultView(listView.ItemsSource);

        dataView.SortDescriptions.Clear();
        SortDescription sd = new SortDescription(sortBy, direction);
        dataView.SortDescriptions.Add(sd);
        dataView.Refresh();
    }