2010-12-08 5 views
2

Ich habe eine WPF4 DataGrid (die, die in WPF4 enthalten ist) mit Spalten "Nachname", "Vorname" usw. Wenn der Benutzer zum Beispiel eine Spaltenüberschrift klickt ‚Name‘, wird alles in der richtigen Reihenfolge nach meinen Kultureinstellungen sortiert, zum Beispiel:Vorsortieren eines DataGrid in WPF nach lokalisierter Sortierreihenfolge

Anderson 
Rockford 
Ångström 

ich mag den ‚Namen‘ -Spalte vorsortiert werden, also hat mich

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

genau wie in der Antwort auf die Pre-sorting a DataGrid in WPF Frage. Das Problem ist, dass WPF verwendet nun eine unterschiedliche Reihenfolge, wobei ‚A‘ wie ‚A‘ sortiert ist (ich denke, das ist eine Art Ordnung US):

Andersson 
Ångström 
Rockford 

Sie manuell die ‚Name‘ Kopf klicken Wieder sortiert die Namen, diesmal nach meinen Kultureinstellungen.

Wie kann ich WPF mitteilen, die aktuelle Kultureinstellung beim Vorsortieren des DataGrid zu verwenden?

Antwort

1

Haben Sie versucht, die Culture-Eigenschaft von CollectionViewSource zu setzen? So etwas wie (drycoded) Edited pro Ihren Kommentar:

... 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> 

Ich bin nicht sicher, warum das nicht Collection die gleiche Kultur standardmäßig verwenden würde, aber wenn es das nicht ist sollte die Eigenschaft, die es behebt für Sie.

Siehe auch diese Artikel darüber, wie Bindung scheint die falsche Kultur zu verwenden, wenn das Ziel ein String ist, vielleicht kann er etwas Licht für euch vergossen: http://www.nbdtech.com/Blog/archive/2009/02/22/wpf-data-binding-cheat-sheet-update-the-internationalization-fix.aspx

Oder diese Frage: WPF XAML Bindings and CurrentCulture Display

+0

'Culture =“ {x: Static glob: CultureInfo.CurrentCulture} "' funktioniert (anstatt '... CurrentUICulture' aus irgendeinem Grund), thx! Nicht wirklich sicher, warum ich es brauche, da ich auch den 'OverrideMetadata'-Fix verwende, wie in deinem Spickzettel-Link beschrieben. – Batibix