У меня есть класс модели с кучей числовых переменных, которые часто меняются.Все они отправляют свои пользовательские события, поэтому их можно привязать.
В моем пользовательском интерфейсе пара этих экземпляров класса объединена в ArrayList, который служит поставщиком данных для Spark DataGrid.Переменные класса меняются очень хорошо, поэтому проблема там.
Что я хотел бы сейчас сделать, это изменить цветовое форматирование этих чисел (точнее, соответствующих меток в сетке) в зависимости от данных, которыеприходит, так сказать, зеленый цвет, когда новое значение больше, и красный, если новое значение меньше старого.
Как я могу заставить эту работу работать?Я хоть о каком-то кешировании старого значения и потом сравниваю старое и новое.Это способ сделать это, если да, то как?Или есть другой, возможно, более простой способ без необходимости что-либо кэшировать?
Любая помощь будет принята с благодарностью!
Редактировать: Основано на примере, приведенном @ 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, которое выбрасываетнеопределенная ошибка), однако при использовании этого самого средства визуализации элементов для нескольких столбцов сетки используются одинаковые значения для каждого столбца сетки.О чем это?
Редактировать: Извините, это работает, только если я обращаюсь непосредственно к свойству Модели, например, data.property, что я не могу сделать.Мне нужен общий рендер для всех столбцов.