コンボボックスのItemSourceにバインドされた言語のリストがあります。時折、言語のリストが変更されることがあります。これが起こると、SelectedItemは消去されます。 Bindingが使用されているため、古い値を再割り当てすることは機能していないようです。コンボボックスは、コードでバインドされたItemSourceが変更されたときのSelectedItemの保持
ItemSource = "{Binding Languages, IsAsync = true}"
SelectedItem = "{Binding SelectedLanguage}"
を持っているコンボボックス選択した項目は、まだ空白に行くので、私は(約)
var prevLanguage = this.SelectedLanguage;
this.Languages = newLanguages;
if (this.Languages.Keys.Contains(prevLanguage))
this.SelectedLanguage = prevLanguage;
else
this.SelectedLanguage = myDefaultLanguage;
これは明らかに、あまりにも早く起きてきました。 prevLanguageまたはmyDefaultLanguageのいずれにも設定されません。 ItemSourceでバインドが完了した後、SelectedLanguageが設定されるようにするにはどうすればよいですか?
どのイベントハンドラでは、このコードの実行を行いますができますか? –
NotifyPropertyChanged – tofutim
これは良いコメントでした。私のプログラムの最後のバージョンでは、Binding Languages IAsync = trueでした。 – tofutim