У меня есть класс модели с кучей числовых переменных, которые часто меняются. Все они отправляют свои настраиваемые события, поэтому их можно привязать.
В моем пользовательском интерфейсе несколько экземпляров этих классов объединены в ArrayList, который служит поставщиком данных для Spark DataGrid. Переменные класса меняются отлично, так что проблема есть.
Что я хотел бы сделать сейчас, так это изменить цветовое форматирование этих чисел (точнее, соответствующие метки в gridcoloums) в зависимости от входящих данных, так сказать, изменение зеленого цвета, когда новое значение больше, изменить становится красным, когда новое значение меньше старого.
Как я могу заставить это работать? Я думал о каком-то кешировании старого значения, а потом сравнивал старое и новое. Это способ сделать это, и если да, то как? Или есть другой, возможно, более простой способ без необходимости что-либо кэшировать?
Любая помощь приветствуется!
Изменить: на основе примера, приведенного @ NoobsArePeople2, это мой текущий код. Сначала DataGrid. DataProvider - это список ArrayList, содержащий объекты класса myModel.
<s:DataGrid dataProvider="{_listItems}" >
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="change" headerText="Change" itemRenderer="tableCell">
<s:GridColumn dataField="bid" headerText="Bid" itemRenderer="tableCell">
...
</s:DataGrid>
Теперь средство визуализации tableCell;
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" width="100%" height="100%">
<fx:Script>
<![CDATA[
private var previousData:Number;
private var labelColor:uint;
private var _data:Object;
override public function set data(value:Object):void {
previousData = _data;
_data = Number(value);
invalidateProperties();
}
override protected function commitProperties():void {
super.commitProperties();
if(previousData < data) {
labelColor = 0x40c040;
} else if (previousData > data){
labelColor = 0xf05050;
} else
labelColor = 0xc0c0c0;
itemLabel.setStyle("color", labelColor);
itemLabel.text = String(_data);
}
]]>
</fx:Script>
<s:Label id="itemLabel"/>
</s:GridItemRenderer>
Пока это работает нормально (в отличие от использования свойства данных, которое вызывает неопределенную ошибку), однако при использовании этого самого средства визуализации элементов для нескольких столбцов сетки он использует одни и те же значения для каждого столбца сетки. О чем это?
Изменить: извините, это работает, только если я напрямую обращаюсь к свойству модели, например data.property, чего я не могу. Мне нужен общий рендеринг элементов для всех столбцов.