У меня есть 4 ComboBox, расположенных горизонтально:
Названия только для справки.
[Платформы] [Выпуски] [Выпускные позиции] [Выпускные товары]
Моя модель интерфейса для коробок выглядит следующим образом:
- Сначала все четыре комбинированных списка отключены (IsEnabled = false)
- Когда страница загружается, асинхронный обратный вызов получает данные платформ и связывает их со списком платформ после его включения, а затем вручную добавляет «Все» как элемент.
Пользователь выбирает платформу
- Если пользователь выбирает «Все», я делаю следующее: отключаю три других выпадающих списка
и вызовите метод Async для повторного связывания данных со списком платформ.
releasesFilterComboBox.IsEnabled = false;
releaseItemsFilterComboBox.IsEnabled = false;
releaseItemProductsFilterComboBox.IsEnabled = false;
mainClient.GetBuildsAsync(null);
- Если пользователь выбирает какую-либо другую платформу (кроме «Все»), в зависимости от того, какая платформа выбрана, я собираю все элементы, соответствующие платформе, из объекта в DataContext и устанавливаю ItemsSource для Выпускает comboBox для него следующим образом:
BuildsListBox.ItemsSource = platformSelectedBI = from bi in buildInfos where
bi.GetBuildsResult.ReleasePlatform == selectedPlatform
select bi;
releasesFilterComboBox.IsEnabled = true;
List<String> releaseNumbers = ( from bld in buildInfos.Where(bi => bi.GetBuildsResult.ReleasePlatform == selectedPlatform)
select bld.GetBuildsResult.ReleaseNumber ).ToList();
releaseNumbers.Insert(0, "All");
releasesFilterComboBox.ItemsSource = releaseNumbers.Distinct();
- Остальные ComboBox'ы следуют той же самой процедуре, чтобы связать данные и вызвать
и действия выполняются в методе, который вызывается при возникновении событий SelectionChanged.
и т. Д. -> то же самое для остальных ящиков.
Моя проблема: после того, как я заполнил хотя бы первые два поля со списком, когда я выбираю
параметр «Все» в ПРЕДЫДУЩЕМ ComboBox, после ожидаемого поведения (другие комбинированные списки отключены), когда я выбираю параметр, отличный от «ВСЕ», событие SelectionChanged запускается для КАЖДОГО КОМБОБОКСА, который был заполнен ранее! (все что было отключено). ###
Просто чтобы уточнить, если это еще не так.
Я выбрал платформу, поэтому выпуски заполнены. Затем я выбрал Релиз, и поэтому элементы Релизов заполняются. Теперь, когда я выбираю «ВСЕ» в выпадающем списке «Платформы», поля «Выпуск» и «Выпуск элементов» отключаются. Затем, когда я выбираю платформу, отличную от «ALL», происходит событие SelectionChanged не только для платформ, но и для Releases и ReleaseItems.
Единственное изменение, которое я делаю в комбинированных списках во второй части обработчика событий, это УСТАНОВКА ИСТОЧНИКА ПУНКТОВ, как в приведенном выше коде. Ничего больше.
Почему события SelectionChanged запускаются для других комбинированных списков?
Это известная ошибка в выпадающих списках SL? Могу ли я предотвратить это?
Извините, если вопрос и объяснение не очень ясны. Я постараюсь уточнить, если вы спросите меня.
Большое спасибо!