Ich habe einige Probleme in Windows 8 Metro-Anwendungen (XAML & C#) in Bezug auf die regionalen Einstellungen des Benutzers. Es scheint, dass die Apps die regionalen Einstellungen des Benutzers nicht respektieren, also, selbst wenn Ihr Windows 8 eingestellt ist, um Daten und Zeiten im finnischen Format anzuzeigen, zeigen die Apps sie weiterhin US-Formatierung an. Aber das ist so ein großes Problem, dass es etwas geben muss, was mir fehlt?WinRT-Apps und regionale Einstellungen. Die richtige Methode zum Formatieren von Daten und Zahlen basierend auf den regionalen Einstellungen des Benutzers?
Um dies zu testen, begann ich mit der Erstellung einer WPF-Anwendung. Die Anwendung druckt nur die Current und die formatierte DateTime.Now:
private void Culture_Loaded_1(object sender, RoutedEventArgs e)
{
this.Culture.Text = System.Globalization.CultureInfo.CurrentCulture.DisplayName;
}
private void Date_Loaded_1(object sender, RoutedEventArgs e)
{
this.Date.Text = DateTime.Now.ToString();
}
Hier ist meine Standard-Ländereinstellungen:
Sobald er ausgeführt wird, die App das Datum im finnischen Format angezeigt:
Dann änderte ich die regionalen Einstellungen zu US:
Und wenn die App wieder laufen gelassen wurde, die Kultur und die Formatierung geändert:
Dies ist wie ich alles erwartet zu funktionieren, und dies ist auch, wie ich erwartet hatte WinRT-Anwendungen zu arbeiten.
Als nächsten Schritt erstellte ich eine WinRT (XAML & C#) App mit demselben Code und setzte die regionalen Einstellungen wieder auf Finnisch zurück. Das Problem:
Auch wenn ich durch regionale Einstellungen festgelegt haben, dass die Formatierung sollte „Finnish“, die WinRT App mit US-Formatierung zeigt das Datetime sein. Ich änderte dann die Projektdatei der App und machte fi-FI die Standardsprache:
Diese Änderung auch die App-Kultur geändert:
Seltsam. Ich habe die Standardsprache auf den Standardwert zurückgesetzt und die Formatierung wurde auf US zurückgesetzt. Ich habe dann innerhalb des Projekts Ordner "Strings - fi-FI" erstellt und dem Projekt ein leeres "Resources.resw" hinzugefügt. Diese leere Datei scheint genug zu sein, wie ich jetzt die finnische Formatierung erhalten wurde:
Sobald ich die leere Ressource-Datei entfernen, kehren die Formatierungen zu US zurück:
Sehr seltsam.
Dies führt zu wenigen Fragen, aber die wichtigste Frage ist: Ist es beabsichtigt, dass die WinRT-Apps nicht den regionalen Einstellungen des Benutzers folgen, wie es die WPF-Apps tun?
So acutally, wie die get/respektieren die Benutzer Regional Format-Einstellungen? Ich startete den Windows Phone 8.1 Emulator mit der folgenden Konfiguration für Testzwecke: UI Sprache: Deutsch, Region: USA, Formateinstellungen: Irisch Ich habe keine Möglichkeit gefunden, die Information zu erhalten, dass der Benutzer seine Formateinstellungen festgelegt hat zu irisch. Und mein einziger Wunsch ist, eine DateTime so zu formatieren, wie der Benutzer sie sehen möchte. Und regionales Format bedeutet nicht automatisch die Region, in die ich das Gerät eingestellt habe, oder die von mir ausgewählte Benutzeroberfläche. Auf meinen Devices setze ich die UI auf Englisch, möchte aber alle TimeStamps und Daten im deutschen Format sehen ... – Kornelis
danke, das folgende war super, weil ich ISO 3166-1 alpha2 https://en.wikipedia.org/ benötigt habe wiki/ISO_3166-1_alpha-2 GeographicRegion userRegion = new GeographicRegion(); Zeichenfolge regionCode = userRegion.CodeTwoLetter; – Quincy
Dies hat für mich funktioniert, aber jetzt brauche ich große Zahlen und die 'CurrencyFormatter' unterstützt keine Dezimalstelle, also brauche ich eine Umgehungslösung ... –