我有一个使用中继器的 mxml 面板。面板可以水平调整大小,我希望重复的组件与面板一起调整大小。这是一个简单的例子,说明事情的样子:
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" ...>
<!-- scripts and some controls -->
<mx:VBox width="100%">
<core:Repeater width="100%" dataProvider="model">
<ns1:MyItemRenderer width="100%" />
</core:Repeater>
</mx:VBox>
</mx:TitleWindow>
当我调整组件大小时,重复项的宽度不会改变。
还有按钮和事件处理程序,它们在模型中添加和删除项目。完成后,转发器会更新以显示正确数量的项目,并且所有项目的大小都会正确调整。
调整根面板的大小时,我无法让项目调整大小。我可以看到,中继器周围的 VBOx 正在接收调整大小事件。但是,重复的项目没有得到事件。我试图从连接到 VBox 的调整大小处理程序手动将调整大小事件分派给重复的项目,但这没有帮助。
我还尝试从作为 dataProvider 的 ArrayCollection 添加和删除一个虚拟项目(因为它会触发正确的调整大小,否则如上所述)但是,在 VBox 的调整大小处理程序中执行此操作只会导致转发器不显示任何项目全部。
有什么方法可以让中继器中的项目与它们的封闭容器一起调整大小?
在 mx:List 中使用时,我使用的 ItemRenderer 可以正确调整大小。它是这样构建的,因此当在中继器中使用时,它可以与 List 容器设置的数据属性和 getRepeaterItem() 一起使用。在这种特殊情况下,我不能将 List 用作容器,因为它在通过 rowCount、height 和 maxHeight 属性控制其高度方面的行为方式在这种特殊情况下对我不起作用(我省去了细节)。