Вам не нужно расширять DataGridColumn
, чтобы изменить отступы, и, как вы уже заметили, установка стиля paddingLeft
в вашем DataGridColumnExt
не работает.Я думаю, это не работает, поскольку DataGridColumn
работает только как прокси для стилей.Средство визуализации элементов столбца получает свои стили из столбца.Итак, у вас есть несколько вариантов выполнения того, что вы пытаетесь сделать (см. Мой пример ниже):
- Используйте
mx:DataGridColumn
и установите для него нужные стили, например paddingLeft
.Средство визуализации элементов столбца будет использовать отступы (см. «Столбец 1» в моем примере). - Создайте собственный инструмент визуализации элементов (вы можете расширить
mx:DataGridItemRenderer
, установить стили непосредственно в средстве визуализации элементов и установить столбецitemRenderer
свойство соответственно (см. «Столбец 2» в моем примере). - Если вам часто нужно использовать один и тот же столбец с одинаковыми стилями, имеет смысл создать свой собственный
DataGridColumn
и установить свойitemRenderer
внутри вашего пользовательского столбца (см. «Столбец 3» в моем примере).
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">
<mx:DataGrid x="191" y="171" dataProvider="{[{value: 'foo'}, {value : 'bar'}]}">
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="value" paddingLeft="20"/>
<mx:DataGridColumn headerText="Column 2" dataField="value" itemRenderer="ItemRendererWithPadding"/>
<local:DataGridColumnExt headerText="Column 3" dataField="value"/>
</mx:columns>
</mx:DataGrid>
</mx:Application>
ItemRendererWithPadding.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:DataGridItemRenderer xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="20">
</mx:DataGridItemRenderer>
DataGridColumnExt.as
package
{
import mx.controls.dataGridClasses.DataGridColumn;
import mx.core.ClassFactory;
public class DataGridColumnExt extends DataGridColumn
{
public function DataGridColumnExt(columnName:String = null)
{
super(columnName);
itemRenderer = new ClassFactory(ItemRendererWithPadding);
}
}
}