Ich habe eine DropDown (mit MahApps, wenn das wichtig ist), die ich verwenden möchte, um die Sprache "on the fly" in meinem Programm zu wechseln.Sprache/Ressource programmatisch mit WPF ändern
Sprache Klasse
namespace SAM
{
public class Language
{
public string Title { get; set; }
public string Culture { get; set; }
}
}
Sprache ändern
private void DropLanguage_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
Language lang = DropLanguage.SelectedItem as Language;
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang.Culture);
}
ich alle meine Strings als Ressourcen in Resources.resx
(Standard) und Resources.en.resx
(Englisch)
3 Ausgaben Ich bin nicht un derstand
- Wenn „englisch“ aus der Drop-down-Auswahl ändert sich die Sprache nicht sofort, aber wenn ich etw klicken. sonst, z.B. "nah" (es fragt "sicher?"), die Sprache hat sich geändert.
- Zeichenfolgen, die direkt in der .xaml-Datei wie
<TextBlock Text="{x:Static p:Resources.Config_HeaderBar_Find_Speaker}" />
sind, werden überhaupt nicht aktualisiert. - Bonus: Wie würde ich zurück zur Standardsprache wechseln, als
new CultureInfo(lang.Culture);
erwartet einen Parameter und für den Standard habe ichCulture = null
(wie die Resources.resx hat nichts in seinem Namen). Ändern Sie die Datei aufResources.default.resx
Verwirrungen mit meinem Code viel ...
Wenn eines der Probleme behoben werden könnte, wäre ich sehr dankbar ...