Flex 4 Datagrid s:MXDataGridItemRenderer问题-默认样式丢失了吗?

问题描述

| 所有,我已经在所有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