带有北欧/特殊字符的ListView SortDescriptions

时间:2017-10-25 09:55:31

标签: c# wpf sorting listview

使用以特殊字符(Åå/Ää/Öö)开头的项目对ListView进行排序时,它们不会到达应有的位置。

'Testing' should come before 'Ö:Last place!!'

我是否必须实施自定义排序方法,还是有更好的方法?

如果是自定义排序,是如何按ABC排序,包括特殊字符?

编辑: 这是我目前的排序方法:

                <GridViewColumn DisplayMemberBinding="{Binding Name}" Width="150">
                    <GridViewColumn.Header>
                        <GridViewColumnHeader Tag="Name" Click="SortByColumns">Name</GridViewColumnHeader>
                    </GridViewColumn.Header>
                </GridViewColumn>

...

    private void SortByColumns(object sender, RoutedEventArgs e)
    {
        GridViewColumnHeader column = (sender as GridViewColumnHeader);
        string sortBy = column.Tag.ToString();
        if (listViewSortCol != null)
        {
            AdornerLayer.GetAdornerLayer(listViewSortCol).Remove(listViewSortAdorner);
            siteListView.Items.SortDescriptions.Clear();
        }

        ListSortDirection newDir = ListSortDirection.Ascending;
        if (listViewSortCol == column && listViewSortAdorner.Direction == newDir)
            newDir = ListSortDirection.Descending;

        listViewSortCol = column;
        listViewSortAdorner = new SortAdorner(listViewSortCol, newDir);
        AdornerLayer.GetAdornerLayer(listViewSortCol).Add(listViewSortAdorner);
        siteListView.Items.SortDescriptions.Add(new SortDescription(sortBy, newDir));
    }

1 个答案:

答案 0 :(得分:1)

您应该能够将Language的{​​{1}}属性设置为您的语言:

DataGrid

如果您将<DataGrid Language="sv" ...> 的{​​{1}}设置或绑定到ItemsSource,则可以使用自定义ListView来实现一些完全自定义的排序逻辑。

请参阅以下示例代码。

IList
IComparer