2009-07-07 5 views
1

j'ai deux fichiers de ressources dans le dossier Propriétés d'un projet WPF (VS 2008):comportement Ressources mystérieux/CultureInfo dans WPF App

  • Resources.resx
  • Resources.de-DE.resx

Sélection de la culture "de-dE" ne fonctionne pas (pas d'erreur, mais toujours les chaînes de "Resources.resx" sont utilisés):

public App() 
    { 
     UntitledProject2.Properties.Resources.Culture = new CultureInfo("de-DE"); 
    } 

MAIS: si je renomme "Resources.de-DE.resx" à "Resources.fr-CA.resx" ou "Resources.en-US.resx"

puis définissez via

UntitledProject2.Properties.Resources.Culture = new CultureInfo("fr-CA"); 

ça marche !! Mais pourquoi!? Mystérieux ...

+0

Même ici dans VS 2010. :-( –

Répondre

0

Par défaut, WPF utilisera toujours "en-US"; au moins c'est la dernière fois que j'ai vérifié (ce qui était .net 3.5). Si vous voulez WPF utiliser au lieu de la culture actuellement définie par le système, vous exécutez ce bloc de code:

FrameworkElement.LanguageProperty.OverrideMetadata(
    typeof(FrameworkElement), 
    new FrameworkPropertyMetadata(
     XmlLanguage.GetLanguage(
     CultureInfo.CurrentCulture.IetfLanguageTag))); 

Cela remplacera la valeur par défaut utilisée pour la propriété de dépendance linguistique de FrameworkElement, qui, encore une fois, est « en -US "par défaut. Exécutez ce code une fois et dès le début de la vie de votre application. Après cela, vous ne devriez pas avoir à vous en soucier à nouveau, sauf si vous vous attendez à ce que votre utilisateur change de culture au milieu de l'exécution du programme ...

Questions connexes