一个众所周知的问题是SortDescription对某些文化无法正常工作,还是有任何明显的设置我不知道?
在我的情况下,我使用nb-NO并在WPF应用程序中以错误的顺序获取所有列表(ComboBoxes / ListBoxes)。但是,当使用Linq到实体的预排序查询/ List()填充ObservableCollection时,我得到了正确的顺序。
其他任何经历过同样问题的人,并且解决了这个问题?
答案 0 :(得分:0)
您是否保留数据集的顺序,因为它是从基础数据源返回的?如果您的数据来自SQL Server,Oracle等,那么您可能在海洋的这一边有错误的文化。
答案 1 :(得分:0)
作为一种解决方法,似乎可以实现自己的分拣机。
From jsirr13's answer to a different question:
[SuppressUnmanagedCodeSecurity] internal static class SafeNativeMethods { [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)] public static extern int StrCmpLogicalW(string psz1, string psz2); } public sealed class NaturalStringComparer : IComparer<string> { public int Compare(object a, object b) { var lhs = (MultiItem)a; var rhs = (MultiItem)b; //APPLY ALGORITHM LOGIC HERE return SafeNativeMethods.StrCmpLogicalW(lhs.SiteName, rhs.SiteName); } }
以下是我如何使用上述算法比较器:
private void SortCol() { var dataView = (ListCollectionView)CollectionViewSource.GetDefaultView(ListViewMultiSites.ItemsSource); dataView.CustomSort = new NaturalOrderComparer(); dataView.Refresh(); }