Flex / AIR: выпадающий список не всегда открывается по щелчку

#apache-flex #drop-down-menu #air

#apache-flex #выпадающее меню #air

Вопрос:

У меня есть приложение AIR с 2-3 выпадающими списками и кучей других элементов управления. Выпадающие списки привязаны к dataproviders (ArrayCollections) в одиночном элементе центральной модели. При запуске все они работают нормально.

Однако, когда я нажимаю кнопку, чтобы добавить новые объекты к объекту в другой коллекции ArrayCollection в той же модели, выпадающие списки становятся странными. Они по-прежнему регистрируют щелчки, и все остальные элементы управления по-прежнему работают как раньше, но выпадающие списки не открываются. Обычно раскрывающийся список открывается при достаточном нажатии / ожидании, но если я не сделаю другого выбора, он все равно не откроется после закрытия. При другом выборе этот выпадающий список снова заработает, но другие могут по-прежнему отказываться открываться.

Если я открываю выпадающие списки с помощью Ctrl стрелка вниз, они работают постоянно, так что только щелчок не приводит к правильному открытию. Я могу обойти проблему, вызвав openDropDown() выпадающий список при нажатии, но это кажется неправильным.

Я использую 4.1 SDK, и выпадающие списки — это s: выпадающие списки. Я попытался использовать mx: ComboBoxes вместо этого, но получил такое же поведение. Редактировать: Как ни странно, используя s: ComboBoxes, они работают так, как должны, но я действительно не хочу их использовать, поскольку их, по-видимому, нельзя сделать недоступными для редактирования.

Кто-нибудь сталкивался с этим раньше и сумел это решить? Любые предложения приветствуются.

Комментарии:

1. Это совершенно случайная идея, но, возможно, попытка использования 4.5 SDK могла бы помочь?

2. @dain: Не совсем случайное — у меня было такое же. Пробовал, та же проблема.

3. Пожалуйста, введите код. Кажется, вы делаете что-то необычное.

4. @J_A_X: Я пытаюсь создать образец, но это приложение на базе Cairngorm с событиями, командами и еще много чем, поэтому имитировать его в небольшом примере приложения немного сложно.

5. Вам не следовало использовать Cairngorm: P

Ответ №1:

После долгих попыток с этим, похоже, проблема возникает, когда у меня есть ToggleButtonBar, enabled атрибут которого установлен на основе атрибута в модели представления, которую я использую для представления. Другие элементы управления обрабатывают

 enabled="{model.certainObject != null}"
  

отлично, но не панель переключателей. Он устанавливает атрибут так, как должен, но, похоже, каким-то образом вызывает проблему выпадающего списка, с которой я столкнулся. Думаю, я не буду использовать панель переключателей … =/

Ответ №2:

Первое, что нужно проверить: помечены ли ваши ArrayCollections как Bindable в вашей модели Singleton? Привязаны ли ваши ArrayCollections к значениям в одноэлементной модели?

Привязка — странный зверь; и если вы помещаете много привязываемых свойств внутри одного объекта; я понимаю, что изменение одного из них может вызвать изменение всех привязываемых свойств; что может отразиться на приложении, если у вас много разных представлений, все из которых привязаны к одному и тому же одноэлементному объекту.

Еще одна вещь, которую нужно проверить: я видел действительно странные результаты, если вы используете ту же коллекцию, что и dataProvider, для нескольких списков со списком. ( Я предполагаю, что такое же странное поведение сохранялось бы при использовании нескольких выпадающих списков)

Но здесь я просто предполагаю. Скорее всего, что-то не так в вашем коде. Можете ли вы предоставить доступный для выполнения пример, чтобы продемонстрировать вашу проблему?

Комментарии:

1. Да, вся модель помечена как привязываемая, а выпадающие списки привязаны к массивам коллекций в модели. Никакие два выпадающих списка не привязаны к одной и той же коллекции. Я посмотрю, смогу ли я создать пример приложения, в котором показана проблема, мое текущее приложение слишком велико для публикации.

2. Теперь я попытался разделить поставщики данных из выпадающих списков на (фиктивные) ArrayCollections в их базовых классах. Они должны быть полностью отключены от центральной модели, но проблема возникает в любом случае. К сожалению, мне не удалось воспроизвести проблему в примере приложения. Есть еще идеи? Как вы думаете, может быть виноват фреймворк Cairngorm 2, который я использую?

3. @Lizzan Если вы не можете воспроизвести это в простом примере, значит, что-то в вашем коде является причиной этого. Не имея возможности изолировать эту проблему; Я не верю, что мы можем что-либо сделать, чтобы помочь ее исправить.

4. Да, возможно, это что-то в моем коде (или просто размер проекта), но у меня закончились идеи о том, что искать. Я только надеялся на другое предложение или около того … =) В любом случае, спасибо за ваши догадки!

5. Размер проекта не должен влиять. Если вы хотите предоставить общий доступ к экрану, чтобы перейти к коду; вы можете позвонить мне через www.asktheflexpert.com .