Comment puis-je définir globalement la culture dans une application WPF?

Je souhaite définir la culture d’une application WPF sur une application spécifique en fonction des préférences de l’utilisateur.

Je peux le faire pour le thread actuel via la Thread.CurrentThread.Current(UI)Culture , mais existe-t-il un moyen de le faire globalement pour l’application (afin que tous les threads soient affectés par défaut)?

il n’y a aucun moyen de le définir pour tous les threads de l’application. Toutefois, si vous créez les threads dans votre application, vous pouvez définir la culture pour tout le monde par vous-même, comme vous l’avez mentionné ci-dessus.

Pour définir la culture sur l’application principale, utilisez le code d’extrait suivant:

 Dim newCulture As CultureInfo = new CultureInfo("fr-FR") CurrentThread.CurrentCulture = newCulture 

Essayez de mettre

 en-US 

… dans votre fichier csproj.

ok, c’est ce que j’utilise pour s’assurer que toute mon application est dans une culture en-US.

 CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US"); CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US"); XmlLanaguage lang = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag); FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(lang)); FrameworkContentElement.LanguageProperty.OverrideMetadata(typeof(System.Windows.Documents.TextElement), new FrameworkPropertyMetadata(lang)); 

afin de faire un seul fil dans une culture que vous pouvez faire

 Thread.CurrentThread.CurrentCulture = new CultureInfo("EN-US"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("EN-US"); 

Ou vous pouvez essayer ceci:

  FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement), New FrameworkPropertyMetadata(Markup.XmlLanguage.GetLanguage(Globalization.CultureInfo.CurrentCulture.IetfLanguageTag))) 

Ou essayez de construire une propriété jointe appropriée comme celle-ci

 public class CultureHelper : DependencyObject { public ssortingng Culture { get { return (ssortingng)GetValue(CultureProperty); } set { SetValue(CultureProperty, value); } } // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... public static readonly DependencyProperty CultureProperty = DependencyProperty.RegisterAttached("Culture", typeof(ssortingng), typeof(CultureHelper), new FrameworkPropertyMetadata("en", CultureChanged)); private static void CultureChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { //For testing purposes in designer only if (DesignerProperties.GetIsInDesignMode(d)) { Thread.CurrentThread.CurrentUICulture = new CultureInfo((ssortingng)e.NewValue); } } public static void SetCulture(DependencyObject element, ssortingng value) { element.SetValue(CultureProperty, value); } public static ssortingng GetCulture(DependencyObject element) { return (ssortingng)element.GetValue(CultureProperty); } }