У меня проблема с двусторонней привязкой SelectedItem ListPicker
В моем представлении XAML у меня есть этот ListPicker:
<toolkit:ListPicker ItemsSource="{Binding AvailableTGs}"
SelectedItem="{Binding SelectedTG, Mode=TwoWay}"/>
И на моей ViewModel:
public IList<Term> AvailableTGs
{
get
{
return _AvailableTGs;
}
}
private Term _SelectedTG = null;
public Term SelectedTG
{
get
{
return _SelectedTG;
}
set
{
this.RaiseAndSetIfChanged(x => x.SelectedTaxGroup, ref _SelectedTG , value);
}
}
В первый раз я установил AvailableTGs, привязка обновляется, как и ожидалось. ListPicker выбирает первый элемент, и он помещается обратно в SelectedTG. Проблема в том, что когда я позже обновляю AvailableTGs, это происходит:
Itemsобновляются в ListPicker- Очевидно, что
SelectedItemбольше не является частью нового списка, поэтому ListPicker выбирает первый элемент нового списка и устанавливает его какSelectedItem
(в этот моментItemsсредства выбора уже содержит новый список) - Этот новый
SelectedItemпомещается в ViewModel вSelectedTG - Там возникает уведомление PropertyChanged.
- Это приводит к тому, что
SelectedItemв средстве выбора снова обновляется. - При установке
SelectedItemсредство выбора проверяет, действительно ли оно является частью текущей коллекцииItems. - Эта проверка не пройдена, так как в этот момент коллекция
Itemsснова указывает на старый (первый) экземпляр List.
Я понятия не имею, почему коллекция элементов должна вернуться к старому значению после того, как в ней уже есть новое.
Метод OnItemsChanged ListPicker НЕ вызывается между моментом, когда Items указывает на новое значение, и временем, когда оно опять старый.
Я был бы очень признателен всем, кто может указать мне, что мне не хватает.
Заранее спасибо
Джордж