Сохранение SelectedItem при изменении Bound ItemSource - PullRequest
1 голос
/ 07 июля 2011

У меня есть список языков, связанных с комбинированным списком 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.Как я могу убедиться, что SelectedLanguage устанавливается после завершения привязки на ItemSource?

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

Было бы проще, если бы вы использовали текст вместо выбранного элемента.

      <ComboBox ItemSource = "{Binding Languages, IsAsync = true}"
                      Text = "{Binding SelectedLanguage}"

Кстати, вместо использования

         if (this.Languages.Keys.Contains(prevLanguage))

вы могли бы сделать

       if (this.Languages.ContainKey(prevLanguage))
0 голосов
/ 08 июля 2011

Проблема в том, что IsAsync верна для языков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...