In C# habe ich eine Eigenschaft hinzugefügt, die eine Liste von Tupeln für eine Dropdown-Auswahlbox zurückgibt. Die Liste enthält Zeichenfolgen aus Ressourcendateien. Bei einer Sprachänderung wird der Wert in der Liste aktualisiert. Beim Aufrufen der Eigenschaft wird der zurückgegebene Wert jedoch nicht aktualisiert.Aktualisieren einer privaten List-Variablen bei Sprachänderung MVVM und XAML
Unten ist der Code
private List<Tuple<string, string>> _languageList = new List<Tuple<string, string>>
{
new Tuple<string, string>("", AppResources.Automatic),
new Tuple<string, string>("0407", AppResources.LanguageGerman),
new Tuple<string, string>("0809", AppResources.LanguageUKEnglish),
new Tuple<string, string>("0409", AppResources.LanguageUSEnglish),
new Tuple<string, string>("0c0a", AppResources.LanguageSpanish),
new Tuple<string, string>("0c0c", AppResources.LanguageFrenchCanadian),
new Tuple<string, string>("040c", AppResources.LanguageFrench),
new Tuple<string, string>("0413", AppResources.LanguageDutch)
};
public List<Tuple<string, string>> LanguageList
{
get
{
return _languageList;
}
}
Dies ist, wie ich die Tupel-Wert (ein keyvalue Paar mit lcid und Sprachname)
SelectedLanguage = LanguageList.FirstOrDefault(q => q.Item1 == CurrentSettings.SelectedLanguage) ?? LanguageList[0];
Auf Sprache Update werden die Ressourcen-Strings nehmen die aufrufen übersetzter Wert. Die Eigenschaft LanguageList gibt jedoch eine veraltete Liste zurück, die beim Start der App zuerst initialisiert wurde.
Haben Sie Vorschläge, wie ich diese Liste bei Sprachänderungen aktualisieren kann?
Vielen Dank im Voraus.
Sie müssen benachrichtigt werden Eigenschaft hat sich geändert? –
Alles sieht korrekt aus, aber dein Problem ist unklar. Sie sagen "Aber die Eigenschaft LanguageList gibt eine veraltete Liste zurück, die beim Start der App zuerst initialisiert wurde", dies erscheint vollständig wie erwartet und korrekt. Warum müssten Sie diese Liste ändern? Und wenn Sie es * ändern * müssen, bitte [bearbeiten] und spezifizieren Sie ** genau, welche Änderungen Sie vornehmen müssen **. Ich könnte annehmen, dass Sie die ausgewählte Sprache entfernen möchten (keine Notwendigkeit, es als eine Option aufzulisten), in welchem Fall Sie eine ObservableCollection verwenden sollten, aber das ist wirklich unnötig, also werde ich das nicht annehmen. – Will
Danke für die Vorschläge. Beim Auswählen einer Sprache aus der Liste würde ich die Ressourcendateien so umstellen, dass sie der gewählten Sprache entsprechen. Es übersetzt die gesamte Anwendung, aber diese Liste. Die App-Ressourcenreferenzen spiegeln die aktualisierten Sprachübersetzungen wider.Aber die Eigenschaft LanguageList gibt den übersetzten _languageList-Wert nicht zurück. Es gibt vielmehr den Standardwert (Englisch) zurück. – Sriram