cool IT Team-Blog

Windows Culture Info in WPF Applikationen und Report Viewer Controls

WPF Applikationen verwenden standardmäßig die Culture Info "en-US" und nicht wie in WinForms-Applikationen die Culture Info des Betriebssystems. Will man in der WPF Applikation die Culture Info von Windows übernehmen, so erreicht man dies am einfachsten mit folgendem Code Stück in der OnStartup Methode in App.cs:

protected override void OnStartup(StartupEventArgs e)
{
  // Retrieve culture from system regional settings
  System.Threading.Thread.CurrentThread.CurrentUICulture = new
      CultureInfo(CultureInfo.CurrentCulture.LCID, true);
  FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
      new FrameworkPropertyMetadata(
          XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
 
  base.OnStartup(e);
  ...
}

 
Damit werden Zahlen und Datumsangaben in den UI Elementen so dargestellt, wie in Windows in den Ländereinstellungen festgelegt.

Report Viewer Control

Ein in WPF eingebettetes Report Viewer Control verwendet ebenfalls standardmäßig die Culture Info "en-US" und nicht die von Windows oder der zugrunde liegenden WPF Applikation.

Korrekterweise sollte das Report Viewer Control die Culture Info der WPF Appklikation benutzen.

Um dem Report Viewer Control die Culture Info der WPF Applikation zu übergeben, definert man im Report eine Variable, z.B. Language:

image001.png

Danach setzt man das Language Property des Reports auf diese Variable:

image003.png

Im Code-Behind des Report Viewer Fensters muss man diese Variable noch mit der Sprache der WPF Applikation versorgen:

private ReportViewer _rv = new ReportViewer();
...
_rv.LocalReport.SetParameters(new ReportParameter("Language",
    System.Threading.Thread.CurrentThread.CurrentUICulture.Name));

 
Hinweis: Das Report Viewer Control bietet für das Language Property auch ein Built-in Feld User!Language. Damit übernimmt das Control die Culture Info des Betriebssystems.

Noch eine Anmerkung zum Zahlenformat des Report Viewers:
Der Format String eines Zahlen-Feldes im Report ist immer sprachneutral. Möchte man z.B. in der darzustellenden Zahlen Tausdendertrennzeichen und zwei Nachkommastellen verwenden, so definiert man den Formatstring als "#,##0.00". Für die Culture "de-AT" wird dann z. B. 1.234.567,80 angezeigt.

Ist doch cool, oder?

Verfasst: 30.03.2012 12:47:09 von Roland Koller
Tags: .NET, Report Viewer, WPF

1


Kommentare
Für diesen Blogbeitrag liegen zurzeit keine Kommentare vor.
Einen Kommentar schreiben



 Security code