#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 .