问题描述
|
所有,我已经在所有Datagrid列上实现了HeaderRenderer。当我这样做时,似乎所有默认的DataGrid列标题样式都将丢失,例如:
当我将鼠标悬停在列标题上时,DataGrid中的默认设置是将其显示为另一种颜色(与行选择颜色相同的颜色)-现在不会发生这种情况。
当我单击列标题时,DataGrid中的默认设置是用另一种颜色(与行选择颜色相同)显示它-现在不发生这种情况。
是否已在s:MXDataGridItemRenderer中重新应用这些样式?怎么做...
我的渲染器代码如下...
<s:MXDataGridItemRenderer xmlns:fx=\"http://ns.adobe.com/mxml/2009\"
xmlns:s=\"library://ns.adobe.com/flex/spark\"
xmlns:mx=\"library://ns.adobe.com/flex/mx\"
focusEnabled=\"true\">
<s:states>
<s:State name=\"none\" />
<s:State name=\"asc\" />
<s:State name=\"desc\" />
</s:states>
<!-- border - bottom -->
<s:Rect bottom=\"0\" right=\"0\" left=\"0\" height=\"1\">
<s:fill>
<s:SolidColor color=\"0x9C9C9C\" />
</s:fill>
</s:Rect>
<!-- border - top -->
<s:Rect top=\"0\" right=\"0\" left=\"0\" height=\"1\">
<s:fill>
<s:SolidColor color=\"0x9C9C9C\" />
</s:fill>
</s:Rect>
<s:HGroup verticalAlign=\"middle\" width=\"100%\">
<s:HGroup horizontalAlign=\"left\" width=\"100%\" paddingLeft=\"5\">
<s:Label id=\"lblData\" width=\"100%\"
top=\"0\" left=\"5\" right=\"0\" bottom=\"0\"
paddingTop=\"5\" paddingBottom=\"5\"
verticalAlign=\"middle\"
color=\"black\"
text=\"{dataGridListData.label}\"
maxdisplayedLines=\"1\"
/>
</s:HGroup>
<s:HGroup horizontalAlign=\"right\" verticalAlign=\"middle\" paddingRight=\"2\" >
<s:Label id=\"lblcolCount\"
top=\"0\" left=\"0\" right=\"0\" bottom=\"0\"
paddingTop=\"5\" paddingBottom=\"5\"
verticalAlign=\"middle\"
color=\"black\"
text=\"{colCount}\" />
<mx:Image id=\"image_down\" top=\"0\" left=\"0\" bottom=\"0\"
source.asc=\"{GridColumnSortControlAscending}\" verticalAlign=\"middle\"
source.desc=\"{GridColumnSortControlDecending}\"/>
</s:HGroup>
</s:HGroup>
<fx:Script>
<![CDATA[
[Bindable]
public var colCount:String = \"\";
]]>
</fx:Script>
解决方法
是的,创建自定义渲染器时,您将丢失所有样式。您可以查看DataGridHeader的代码,然后尝试复制它,但是就我个人而言,我认为这工作太多。我只是将\'default \'标头渲染器添加到您设置自己的样式的所有列中,然后从此处添加新的渲染器。
另外,谁会想要默认的Flex3样式? ::P