这是一个可以运行的独立应用程序,它说明了我的问题。当在 Flex spark DataGrid 中使用 LinkButton 来显示可点击的 URL 时,如果 URL 的列宽变得太短(即可能由用户调整),则显示的 URL 文本会运行到它的相邻列中。如果您运行下面的代码,您将看到以下内容:
有人知道如何改进吗?理想情况下,URL 文本将被截断以适应其列的宽度,并且每当发生这种截断时都会显示工具提示(例如,类似于 spark Label 属性showTruncationTip="true"
)。人们在实践中做什么?
<?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="300" minHeight="300">
<fx:Declarations>
<!-- Define the data -->
<fx:XMLList id="siteList">
<site> <name>IMDB</name> <url>http://www.imdb.com</url> </site>
<site> <name>BoardgameGeek</name> <url>http://www.boardgamegeek.com</url> </site>
<site> <name>Yahoo! Finance</name> <url>http://finance.yahoo.com</url> </site>
</fx:XMLList>
<!-- Use an XMLListCollection for the Spark DataGrid -->
<s:XMLListCollection id="siteList2" source="{siteList}"/>
</fx:Declarations>
<s:layout> <s:VerticalLayout/> </s:layout>
<s:Panel title="Spark DataGrid Links" width="300" height="300"
horizontalCenter="0" verticalCenter="0">
<s:DataGrid id="sparkDataGrid"
width="100%" height="100%"
dataProvider="{siteList2}">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="url" headerText="URL" width="150" itemRenderer="myItemRenderer"/>
<s:GridColumn dataField="name" headerText="Name"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>
</s:Panel>
</s:Application>
名为 myItemRenderer.mxml 的文件(位于同一目录中)是:
<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" >
<s:HGroup height="25" verticalAlign="middle" horizontalAlign="left">
<mx:LinkButton label="{data.url}"
textDecoration="underline"
textRollOverColor="0x7777FF"
click="navigateToURL(new URLRequest(data.url))"
width="100%"
labelPlacement="left"
color="0x0000DD"/>
</s:HGroup>
</s:GridItemRenderer>