C#では、ドロップダウン選択ボックスのタプルのリストを返すプロパティを追加しました。このリストには、リソースファイルの文字列が含まれています。言語の変更については、リストの値が更新されています。しかし、プロパティーを呼び出すとき、戻り値はリフレッシュされません。以下言語変更のプライベートList変数の更新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;
}
}
これは私が言語Updateでタプル値(LCIDと言語名でキー値ペア)
SelectedLanguage = LanguageList.FirstOrDefault(q => q.Item1 == CurrentSettings.SelectedLanguage) ?? LanguageList[0];
を呼び出す方法、リソース文字列を取っているあります翻訳された価値。しかし、プロパティLanguageListは、アプリケーションの起動時に最初に初期化された廃止リストを返します。
言語の変更についてこのリストを更新するにはどうすればよいですか?
ありがとうございます。
プロパティが変更されたことを通知する必要がありますか? –
すべてが正しいように見えますが、問題は不明です。あなたは "しかし、プロパティLanguageListは、アプリケーションの起動時に最初に初期化された古いリストを返す"と言っているが、これはまるで期待通りに正しく表示される。なぜあなたはこのリストを変更する必要がありますか?そして、あなたが変更する必要がある場合は、[編集]して**変更する必要のある変更を正確に**指定してください。選択した言語を削除したいと思うかもしれません(オプションとしてリストする必要はありません)。その場合はObservableCollectionを使用する必要がありますが、それは本当に不必要なので、私はそれを想定しません。 – Will
提案していただきありがとうございます。リストから言語を選ぶと、選択した言語に合うようにリソースファイルが切り替わります。これはアプリケーション全体を翻訳していますが、このリストです。 Appリソース参照には、更新された言語の翻訳が反映されています。しかし、LanguageListプロパティは、変換された_languageList値を返していません。むしろ、デフォルト値(英語)を返しています。 – Sriram