Вы можете просто подделать CheckBox
, нарисовав форму CheckBox
в ItemRenderer
и использовать состояния, чтобы показать галочку.
<s:GridItemRenderer>
<s:states>
<s:State name="normal" />
<s:State name="hovered" />
<s:State name="selected" />
</s:states>
<!-- checkbox graphics -->
<s:Group width="16" height="16" horizontalCenter="0" verticalCenter="0">
<s:Rect left="0" right="0" top="0" bottom="0">
<s:fill>
<s:SolidColor color="0xffffff" />
</s:fill>
<s:stroke>
<s:SolidColorStroke color="0xa9aeb2" />
</s:stroke>
</s:Rect>
<!-- tick, only shown when selected -->
<s:Rect includeIn="selected" width="8" height="8" horizontalCenter="0" verticalCenter="0">
<s:fill>
<s:SolidColor color="0x90b40c" />
</s:fill>
</s:Rect>
</s:Group>
</s:GridItemRenderer>
Это упрощенная графика для флажка, но вы можете взять код из свечи CheckBoxSkin
и скопировать / вставить его в itemrenderer
. Возможно, придется изменить некоторые названия штатов.
Это не отменяет выбор одной строки, хотя при нажатии CheckBox
уже выбранной строки, если вы не удерживаете клавишу CTRL . Это поведение по умолчанию для компонента DataGrid
. Боюсь, вам придется создать свой собственный подкласс DataGri
d, если вы хотите предотвратить такое поведение.
Еще одна важная вещь: установка свойства selected
для itemrenderers
не меняет selectIndices
DataGrid
. Следовательно, в следующем цикле commitProperties()
значение, установленное в рендере, будет переопределено DataGrid
.
Старый ответ: (до редактирования)
Класс ItemRenderer
(и, следовательно, класс GridItemRenderer
) имеет свойство selected
.
Таким образом, вы можете привязать свойство selected
флажков к itemrenders
, вот так:
<s:CheckBox selected="{selected}" horizontalCenter="0" />
Вы должны создать отдельный класс ItemRenderer
, чтобы он работал, но вместо встроенного.
Если вы абсолютно хотите использовать встроенный способ, вы всегда можете переопределить установщик selected
.
<s:GridItemRenderer>
<fx:Script>
<![CDATA[
override public function set selected(value:Boolean):void {
super.selected = cb.selected = value;
}
]]>
</fx:Script>
<s:CheckBox id="cb" horizontalCenter="0"/>
</s:GridItemRenderer>