2011-05-26 50 views
0

所有的,我已经在我所有的Datagrid列上实现了HeaderRenderer。当我这样做,似乎所有默认DataGrid列标题样式正在丧失,例如:Flex 4 Datagrid s:MXDataGridItemRenderer问题 - 默认样式会丢失?

  • 当我将鼠标悬停在列标题,在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> 

+0

我添加了Flex标签以使您的问题更受关注。 – 2011-05-26 15:10:09

回答

0

是的,你将创建一个自定义渲染时失去所有的样式。您可以查看DataGridHeader的代码并尝试复制它,但是我个人认为这是太多的工作。我只是将“默认”标题渲染器添加到您设置自己样式的所有列中,然后从那里添加新的渲染器。

另外,谁会想要默认的Flex3样式? yuck:P

+2

谢谢,但我实际上找到了解决方案......需要在s:MXDataGridItemRenderer标记中设置属性autoDrawBackground =“false”。谁会猜到! - 任何地方都不明显...... – Mark 2011-05-26 16:50:02