我想使用Spark Grid但同时我意识到某些组件没有Spark等价物,例如<GridItem>
。
所以,我在程序中混合了Spark和Halo组件,但是当我运行它时,我得到了错误:
“TypeError:错误#1034:类型强制失败:无法将spark.components :: Grid @ 239b40a1转换为mx.containers.Grid。”
该计划:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<s:Grid>
<mx:GridRow id="row1">
<mx:GridItem>
<s:Label text="Description:" paddingTop="5"/>
</mx:GridItem>
<mx:GridItem>
<s:TextArea id="descTI" width="300" height="50"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow id="row2">
<mx:GridItem>
<s:Label text="Name:" paddingTop="5"/>
</mx:GridItem>
<mx:GridItem>
<s:TextInput id="nameTI" width="300"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow id="row3">
<mx:GridItem>
<s:Label text="Target:" paddingTop="5"/>
</mx:GridItem>
<mx:GridItem>
<s:TextInput id="targetTI" width="300"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow id="row5">
<mx:GridItem>
<s:Label text="Operand:" paddingTop="5" />
</mx:GridItem>
<mx:GridItem>
<mx:DataGrid id="attrDG">
<mx:columns>
<mx:DataGridColumn dataField="variable" width="150"/>
<mx:DataGridColumn dataField="level"
width="150"/>
</mx:columns>
</mx:DataGrid>
</mx:GridItem>
<mx:GridItem paddingLeft="3" colSpan="2">
<mx:DataGrid id="attrDG0">
<mx:columns>
<mx:DataGridColumn dataField="variable" width="150"/>
<mx:DataGridColumn dataField="level"
width="150"/>
</mx:columns>
</mx:DataGrid>
</mx:GridItem>
</mx:GridRow>
</s:Grid>
</s:Application>
答案 0 :(得分:2)
spark.components.Grid并不意味着取代mx.containers.Grid。相反,它的直接用途是作为spark.components.DataGrid组件的一个组件,它用于在实现IList的数据提供程序中呈现项目。有关详细信息,请参阅Spark Grid上的语言参考文档。
您应该继续使用mx:Grid
。您甚至可以在官方的使用Flex 4.5 参考中找到它的示例:MX Grid layout container。
但是,我会提供观察,您可能还想查看s:Form容器。在我看来,排列前三行的方式更适合表单所用的用例。
最后,s:DataGrid
旨在取代mx:DataGrid
。所以你应该确保使用它。