У меня есть два поля со списком на странице SL. Когда Combo 1 обновляется, вызывается служба и заполняет Combo 2.
При первом вызове возвращается 3 результата. Когда поле со списком развернуто, вы можете увидеть все 3 варианта.
При втором вызове возвращается 4 результата. Когда поле со списком развернуто, вы можете увидеть 3 варианта с вертикальной полосой прокрутки.
Если я перезагружаюсь и выполняю эти шаги в обратном порядке, я получаю 4 строки при первом вызове и 3 строки + пустую строку при втором вызове. (Нет, пробел не является записью. Его нельзя выбрать.)
Похоже, что размер выпадающего списка сохраняет первую сгенерированную высоту.
Как я могу обновить максимум элементов комбинированного списка, отображаемых после каждого вызова службы?
Спасибо!
Редактировать # 1
Код соответствует шаблону M-V-VM. Когда страница загружается, Group1
заполняет первое поле со списком, и ничего не выбирается. Когда пользователь делает выбор, этот выбор привязывается к Group1Selection.
<ComboBox ItemsSource="{Binding Path=Group1}" SelectedItem="{Binding Path=Group1Selection}" />
<ComboBox ItemsSource="{Binding Path=Group2}" SelectedItem="{Binding Path=Group2Selection}" />
В viewmodel, в наборе доступа set свойства Group1Selection
, у меня есть что-то вроде
set
{
if (group1Selection != value)
{
group1Selection = value;
PopulateGroup2();
OnPropertyChanged("Group1Selection");
}
}
Когда PopulateGroup2 выполняет мой асинхронный вызов службы, получает данные и помещает эти данные в открытое свойство Group2
.
В «нормальных» условиях это не проблема, так как большинство опций имеют десятки возможных вариантов выбора. Однако пара вариантов Group1
имеет только 3 или 4 дочерних варианта. Если сначала выбрать один из них, то высота ComboBox для остальной части этого экземпляра приложения будет установлена соответственно на 3 или 4 вместо максимального значения для 8 показанных элементов.
В соответствии с шаблоном M-V-VM в коде нет кода.