根据本地化排序顺序对WPF中的DataGrid进行预排序

时间:2010-12-08 21:21:20

标签: wpf wpfdatagrid

我有一个WPF4 DataGrid(WPF4中包含的那个),其列有'Surname','First Names'等。当用户点击列标题时,例如'Surname',所有内容都会被排序根据我的文化设置正确的顺序,例如:

Anderson
Rockford
Ångström

我希望'Surname'列预先排序,所以我添加了

    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="SurName" />
    </CollectionViewSource.SortDescriptions>

就像Pre-sorting a DataGrid in WPF问题的答案一样。问题是,WPF现在使用不同的排序顺序,其中'Å'的排序方式类似于'A'(我猜这是美国的排序顺序):

Andersson
Ångström
Rockford

根据我的文化设置,手动点击“Surname”标题重新排序名称。

如何在预先排序DataGrid时告诉WPF使用当前的区域性设置?

1 个答案:

答案 0 :(得分:1)

您是否尝试过设置CollectionViewSource的Culture属性?类似(干编码)根据您的评论编辑

... in your namespaces
xmlns:glob="clr-namespace:System.Globalization;assembly=mscorlib"
....


<CollectionViewSource Culture="{x:Static glob:CultureInfo.CurrentCulture}">
    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="SurName" />
    </CollectionViewSource.SortDescriptions>
</CollectionViewSource>

我不确定为什么CollectionViewSource默认情况下不会使用相同的文化,但是如果不是这个应该是为你修复它的属性。

另请参阅本文,了解当目标是字符串时,绑定似乎如何使用错误的文化,也许它可以为您提供一些启示:http://www.nbdtech.com/Blog/archive/2009/02/22/wpf-data-binding-cheat-sheet-update-the-internationalization-fix.aspx

或者这个问题:WPF XAML Bindings and CurrentCulture Display