Apache flex Flex/AIR:DropDownList不';不要总是单击打开

Apache flex Flex/AIR:DropDownList不';不要总是单击打开,apache-flex,drop-down-menu,air,Apache Flex,Drop Down Menu,Air,我有一个带有2-3个下拉列表和一系列其他控件的AIR应用程序。DropDownList绑定到中心模型单例中的数据提供程序(ArrayCollections)。发射时,它们都工作正常 但是,当我单击按钮将新对象添加到同一模型中另一个ArrayCollection中的对象时,DropDownList会变得很奇怪。它们仍然注册点击,所有其他控件仍然像以前一样工作,但下拉列表不会打开。单击/等待足够长的时间通常会打开下拉列表,但如果我没有进行其他选择,则在关闭后它仍然不会打开。做出不同的选择使DropD

我有一个带有2-3个下拉列表和一系列其他控件的AIR应用程序。DropDownList绑定到中心模型单例中的数据提供程序(ArrayCollections)。发射时,它们都工作正常

但是,当我单击按钮将新对象添加到同一模型中另一个ArrayCollection中的对象时,DropDownList会变得很奇怪。它们仍然注册点击,所有其他控件仍然像以前一样工作,但下拉列表不会打开。单击/等待足够长的时间通常会打开下拉列表,但如果我没有进行其他选择,则在关闭后它仍然不会打开。做出不同的选择使DropDownList再次工作,但其他人可能仍然拒绝打开

如果我使用Ctrl+向下箭头打开下拉列表,它们会一直工作,因此只有单击不能正确触发打开。我可以在单击下拉列表时调用
openDropDown()
,解决这个问题,但感觉不太对劲

我使用的是4.1SDK,下拉列表是s:DropDownLists。我尝试改用mx:combobox,但得到了相同的行为编辑:使用s:ComboBox很奇怪,它们可以正常工作,但我真的不想使用它们,因为它们似乎无法被设置为不可编辑


以前有人碰到过这个问题并设法解决了吗?欢迎任何建议。

首先要检查的是:您的模型Singleton中是否有标记为Bindable的阵列集合?您的ArrayCollections是否绑定到模型Singleton中的值

捆绑是一种奇怪的野兽;如果你把很多可绑定的属性放在一个对象中;我理解,一个属性的更改可能会触发所有可绑定属性的机会;如果你有很多不同的视图都绑定到同一个单例对象,那么这些视图会在应用程序中产生涟漪

另一件需要检查的事情是:如果使用与数据提供者相同的集合来创建多个组合框,我会看到非常奇怪的结果。(我假设如果使用多个DropDownLists,相同的奇怪行为将持续存在)


但是,我只是在猜测。很可能你的代码里有什么不对劲。您能否提供一个可运行的示例来演示您的问题

在对此进行了大量修补之后,当我有一个ToggleButtonBar时,问题似乎出现了,它的
属性是基于视图的表示模型中的属性设置的。另一个控件处理

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

很好,但不是钮扣吧。它设置了它应该设置的属性,但不知何故似乎导致了我一直遇到的下拉列表问题。我猜我不会使用ToggleButtonBar…=/

这是一个完全随机的想法,但也许尝试4.5SDK会有所帮助?@dain:不完全随机-我也有同样的想法。试过了,同样的问题。请输入代码。似乎你在做一些古怪的事情。@J_A_X:我正在尝试创建一个示例,但它是一个基于Cairngorm的应用程序,包含事件、命令等等,所以在一个小示例应用程序中模拟它有点棘手。你不应该使用Cairngorm:PYes,整个模型都标记为可绑定,并且DropDownList绑定到模型中的ArrayCollection。没有两个下拉列表绑定到同一个集合。我将看看是否可以制作一个示例应用程序来显示问题,我当前的应用程序太大,无法发布。我现在尝试将下拉列表的数据提供程序分离到基类中的(虚拟)ArrayCollection中。它们应该与中心模型完全断开链接,但问题仍然存在。不幸的是,我无法在示例应用程序中重现该问题。还有其他想法吗?你认为我使用的Cairngorm 2框架是罪魁祸首吗?@Lizzan如果你不能在一个简单的示例中重现它,那么代码中的某些东西就是导致它的原因。无法孤立该问题;我不相信我们能做些什么来帮助修复它。是的,这可能是我的代码中的一些东西(或者只是项目的大小),但我不知道该找什么。我只是希望得到另一个建议……=)无论如何,谢谢你的猜测!项目的规模应该没有影响。如果您想进行屏幕共享以跳过代码;你可以通过www.asktheflexpert.com给我打电话。