     public function getItemRendererFactory(forHeader:Boolean, data:Object):IFactory
     {
         if (forHeader)
-            return replaceItemRendererFactory(headerRenderer);
+        {
+            if (!_contextHeaderRenderer)
+                _contextHeaderRenderer = replaceItemRendererFactory(headerRenderer, true);
+            return _contextHeaderRenderer;
+        }
 
         if (!data)
-            return replaceItemRendererFactory(nullItemRenderer);
-
-        return replaceItemRendererFactory(itemRenderer);
+        {
+            if (!_contextNullItemRenderer)
+                _contextNullItemRenderer = replaceItemRendererFactory(nullItemRenderer);
+            return _contextNullItemRenderer;
+        }
+
+        if (!_contextItemRenderer)
+            _contextItemRenderer = replaceItemRendererFactory(itemRenderer);
+        return _contextItemRenderer;
     }
 
     /**

        {
            owner.invalidateList();
            owner.columnRendererChanged(this);
        }

        dispatchEvent(new Event("nullItemRendererChanged"));

     *  Storage for the headerRenderer property.
     */
    private var _headerRenderer:IFactory;
    private var _contextHeaderRenderer:IFactory;

    [Bindable("headerRendererChanged")]
    [Inspectable(category="Other")]
