【发布时间】:2010-06-03 16:20:35
【问题描述】:
我有一个使用中继器的 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 的调整大小处理程序中执行此操作只会导致转发器不显示任何项目。
有什么方法可以让中继器中的项目随其封闭容器调整大小?
我使用的 ItemRenderer 在 mx:List 中使用时可以正确调整大小。它是这样构建的,因此当在中继器中使用时,它可以与 List 容器设置的数据属性和 getRepeaterItem() 一起使用。在这种特殊情况下,我不能将 List 用作容器,因为它在通过 rowCount、height 和 maxHeight 属性控制其高度方面的行为方式在这种特殊情况下对我来说不起作用(我省去了详情)。
【问题讨论】:
标签: apache-flex repeater resizable