У меня проблема с двусторонним связыванием 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
на средстве выбора - Эта проверка завершается неудачно, поскольку в этот момент коллекция
Items
указывает настарый (первый) экземпляр списка снова.
Я понятия не имею, почему коллекция элементов вернется к старому значению после того, как у него уже будет новое.
OnItemsChanged
Метод ListPicker НЕ вызывается между таймамиe Items
указывает на новое значение и время, когда оно снова имеет старое значение.
Я был бы очень признателен всем, кто может указать мне на то, что мне не хватает.
Заранее спасибо
Джордж