有没有人知道在Spark DataGrid中对所选文本应用样式的方法?
我认为最好的办法是让一个带有textarea的itemrenderer但之后,我不知道该怎么办。
如果选择了单元格,我的目标不是更改颜色标签。 实际上,在我的梦想中,项目是可编辑的,您只能在单元格内选择一些单词并将特定样式应用于所选文本部分(通过单击按钮,一个用于粗体,一个用于斜体...)。比,文本可以存储在数据库中,如html文本。
我想像使用RichTextEditor但没有ControlBar一样使用cell itemrenderer。就我而言,我想在datadgrid外面只有一个控制栏。
如果你能帮助我,我会很高兴。
由于
答案 0 :(得分:2)
使用Spark的最佳方法通常是皮肤。
通过属性进行基本控制,例如更改所选颜色:
<?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">
<s:DataGrid selectionColor="0xff0000">
<s:dataProvider>
<s:ArrayList>
<fx:String>a</fx:String>
<fx:String>b</fx:String>
<fx:String>c</fx:String>
</s:ArrayList>
</s:dataProvider>
</s:DataGrid>
</s:Application>
要为GridColumn实现项呈示器,请使用States
定义所选状态的显示方式
<强> GridColumnItemRenderer 强>
<?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"
clipAndEnableScrolling="true">
<s:states>
<s:State name="normal" />
<s:State name="selected" />
</s:states>
<fx:Script>
<![CDATA[
override public function prepare(hasBeenRecycled:Boolean):void
{
lblData.text = data[column.dataField]
}
]]>
</fx:Script>
<s:Label id="lblData"
color.selected="0x00ff00"
top="9"
left="7" />
</s:GridItemRenderer>
<强>数据网格强>
上面的项目渲染器是从Spark GridColumn指定的,如:
<s:DataGrid>
<s:columns>
<s:ArrayList>
<s:GridColumn itemRenderer="GridColumnItemRenderer" />
</s:ArrayList>
</s:columns>
</s:DataGrid>