我有一個綁定到組合框ItemSource的語言列表。不時地,語言列表可能會改變。發生這種情況時,SelectedItem將被清除。由於使用綁定,因此重新分配舊值似乎不起作用。該組合框有綁定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
啊,這是一個很好的評論,在我的程序的最新版本中,我有綁定語言IAsync = true。 – tofutim