Как установить зависший цвет в MXAdvancedDataGridItemRenderer? - PullRequest
0 голосов
/ 31 марта 2011

Я пытаюсь создать средство визуализации элементов для AdvancedDataGrid, используя MXAdvancedDataGridItemRenderer.

Когда я присоединяю образец настраиваемого средства визуализации элементов (MXAdvancedDataGridItemRenderer) к иерархическим данным в AdvancedDataGrid, средство визуализации элементов не отображает ячейкуправильно.Пользовательский рендерер будет отображаться только в состоянии наведения (выделено), если он также не выбран.Если строка выбрана и наведена, то средство визуализации пользовательского элемента будет отображать ячейку только как выделенную.

Как я могу заставить пользовательское средство визуализации распознавать, что должно быть выделено при отображении строки?

На рисунке ниже показан пример этого.Первый ряд выделен, и мышь находится над второй ячейкой.Как видите, ячейка отображается как «выделенная», а не как «зависшая».

MXAdvancedDataGridItemRenderer background render issue

Это пример приложения:

<?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="955" minHeight="600">

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            [Bindable]
            public var data:ArrayCollection = new ArrayCollection([
                {label:"Fruit", children:[
                    {label:"Apple", price:1.5},
                    {label:"Banana", price:2},
                    {label:"Orange", price:1.75}]},
                {label:"Drink", children:[
                    {label:"Water", price:0.5},
                    {label:"Milk", price:2.25},
                    {label:"Juice", price:1.25}]}
                ]);
        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <mx:AdvancedDataGrid x="10" y="10" width="350" height="200" itemRenderer="TestItemRenderer">
        <mx:dataProvider>
            <mx:HierarchicalData source="{data}"/>
        </mx:dataProvider>
        <mx:columns>
            <mx:AdvancedDataGridColumn headerText="Name" dataField="label"/>
            <mx:AdvancedDataGridColumn headerText="Price" dataField="price"/>
        </mx:columns>
    </mx:AdvancedDataGrid>

</s:Application>

Иэто пример MXAdvancedDataGridItemRenderer:

<?xml version="1.0" encoding="utf-8"?>
<s:MXAdvancedDataGridItemRenderer 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:Label id="lblData" top="0" left="0" right="0" bottom="0" text="{listData.label}" />

</s:MXAdvancedDataGridItemRenderer>

Ответы [ 3 ]

3 голосов
/ 01 августа 2011

Вы можете попробовать добавить add autoDrawBackground = "false" в свой MXAdvancedDataGridItemRenderer.У меня были проблемы с использованием режима выбора «одиночная ячейка» для ADG, и это решило проблему.

<?xml version="1.0" encoding="utf-8"?>
<s:MXAdvancedDataGridItemRenderer 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"
                                  autoDrawBackground="false">

  <s:Label id="lblData" top="0" left="0" right="0" bottom="0" text="{listData.label}" />

</s:MXAdvancedDataGridItemRenderer>
1 голос
/ 31 марта 2011

Попробуйте это (примечание rollOverColor):

<mx:AdvancedDataGrid x="10" y="10" width="350" height="200" rollOverColor="0xff0000" itemRenderer="TestItemRenderer">
        <mx:dataProvider>
            <mx:HierarchicalData source="{data}"/>
        </mx:dataProvider>
        <mx:columns>
            <mx:AdvancedDataGridColumn headerText="Name" dataField="label"/>
            <mx:AdvancedDataGridColumn headerText="Price" dataField="price"/>
        </mx:columns>
    </mx:AdvancedDataGrid>

Ура, Rob

0 голосов
/ 31 марта 2011

Этого также можно добиться, установив «Стиль» для AdvancedDataGrid

AdvancedDataGrid {
textRollOverColor: #000000;
textSelectedColor: #FFFFFF;
disabledColor: #8E8E8E;
borderColor: #454545;
alternatingItemColors: #FFFFFF, #FCFCFC;
verticalGridLineColor: #F6F6F6;
color: #000000;
selectionColor: #A0B3BE;
rollOverColor: #DBE4E6;
borderStyle: none;
borderThickness: 0;
fontSize: 12;
headerColors: #DBE4E6, #DBE4E6;
selectionDisabledColor: #FFFFFF;

}

...