2011-03-03 4 views
2

Что такое эквивалентный элемент элемента inline itemRenderer в искровом?Каков эквивалент этого Flex MX-кода в Spark?

<mx:AdvancedDataGridColumn headerText="Eliminar" dataField="eliminar" width="100" textAlign="center"> 
        <mx:itemRenderer> 
         <fx:Component> 
          <mx:HBox horizontalAlign="center"> 
          <mx:CheckBox id="chkEliminar" change="{data.eliminar = chkEliminar.selected}" selected="{data.eliminar}"/> 
          </mx:HBox> 
         </fx:Component>      
        </mx:itemRenderer> 
         </mx:AdvancedDataGridColumn> 

ответ

3

Inline itemRenderers работают так же, как и в Halo.

Спарк имеет свой собственный компонент CheckBox <s:CheckBox>вы могли использовать, но вы также можете продолжать использовать Halo CheckBox <mx:CheckBox> вы получили в вашем примере.

+1

Дело если я использую флажок искры, свойство «данные», которое я использую, больше не действует. – overmann

+0

@overmann, Это правда. Я бы просто придерживался Halo CheckBox, если вам нужно использовать inline itemRenderers. В противном случае рассмотрим создание фактического компонента «ItemRenderer». Посетите http://help.adobe.com/en_US/flex/using/WS03d33b8076db57b9-23c04461124bbeca597-8000.html для получения дополнительной информации. –

+0

+! для первой строки вашего ответа. «Inline itemRenderers работают так же, как и в Halo». Дополнительную информацию об этом см. В моем ответе, если вы хотите использовать компоненты Spark в качестве средств визуализации для компонентов MX. – JeffryHouser

2

+1 для ответа Джейсона

Inline itemRenderers work the same in spark as they did in Halo 

Я добавлю, что если вы хотите использовать компоненты Spark, в визуализатор, то вам необходимо либо реализовать интерфейс IDataRenderer или использовать класс ItemRenderer. More info here. Я хотел бы переписать существующий ItemRenderer так, чтобы быть Spark:

<fx:Component> 
<s:ItemRenderer> 
<s:CheckBox id="chkEliminar" change="{data.eliminar = chkEliminar.selected}" selected="{data.eliminar}"/> 
</s:ItemRenderer> 
</fx:Component> 

На данный момент, я не обращая внимания на акт, что связывание в ItemRenderer является consdered плохой практикой, и вы действительно должны использовать событие dataChange для изменения выбранные значения.

+0

@Flextras, Из любопытства, почему обязательна в itemRenderer считается плохой практикой? Не критиковать, просто любопытно. –

+0

@Jason Towne Известно, что это перетащить на производительность. Связывание - дорогостоящая операция. Я предполагаю, что это связано с тем, как работают привязки и как MXML транслируется в ActionScript. Например, с помощью Flextras AutoComplete я исправил большинство «утечек памяти», переписав itemRenderers клиента, чтобы не использовать привязку. – JeffryHouser

+0

@ Flextras, Полезно знать. Спасибо за информацию. –

2

И другие ответы здесь хороши для этого случая, где есть только один подэлемент, но если вы хотите ItemRenderer иметь раскладку вроде HBox вам нужно указать его вручную:

<s:itemRenderer> 
    <fx:Component> 
    <s:itemRenderer> 
     <s:layout> 
     <s:HorizontalLayout horizontalAlign="center"/> 
     </s:layout> 
     <mx:CheckBox id="chkEliminar" change="{data.eliminar = chkEliminar.selected}" selected="{data.eliminar}"/> 
    </s:itemRenderer> 
    </fx:Component>      
</s:itemRenderer> 
+0

Зачем использовать HBox, если у него только один дочерний компонент? Это перебор. – JeffryHouser

+0

@ www.Flextras.com Потому что, если он начнет добавлять к коду, это будет вести себя так же, как компоненты ореола. Без макета рендеринга означает нечто иное, чем HBox. –