在C#中,我添加了一個屬性,該屬性返回下拉選擇框的元組列表。該列表包含來自資源文件的字符串。在語言更改時,列表中的值正在更新。但是,當調用該屬性時,返回的值不會刷新。刷新語言變化MVVM和XAML上的私有列表變量
下面是代碼
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;
}
}
這是我如何調用元組值(鍵值對與LCID和語言名稱)
SelectedLanguage = LanguageList.FirstOrDefault(q => q.Item1 == CurrentSettings.SelectedLanguage) ?? LanguageList[0];
在語言更新,資源串取翻譯價值。但是,該屬性LanguageList返回一個過時的列表,該列表在應用程序啓動時首先被初始化。
有關如何在語言更改時刷新此列表的任何建議?
在此先感謝。
您需要通知屬性已更改? –
一切看起來都正確,但你的問題不清楚。你說:「但是,當應用程序啓動時,屬性LanguageList返回一個已經初始化的廢棄列表」,這完全按預期顯示並且是正確的。爲什麼你需要改變這個列表?而且,如果您*需要*需要更改它,請[編輯]並指定**確切需要做出哪些更改**。我可以假設你想刪除選定的語言(不需要列出它作爲選項),在這種情況下,你應該使用ObservableCollection,但這是真的不必要的,所以我不會假設。 – Will
感謝您的建議。在從列表中選擇語言時,我會切換資源文件以匹配所選語言。它正在翻譯整個應用程序,但是這個列表。應用程序資源參考反映了更新的語言翻譯。但是屬性LanguageList沒有返回已翻譯的_languageList值。相反,它是返回默認值(這是英語)。 – Sriram