【发布时间】:2010-08-17 21:58:12
【问题描述】:
我想知道是否有人对 flex 中的以下 senario 有任何运气。
我希望能够有一个自定义项渲染器,它可以委托给内部的另一个渲染器。
原因可能是在数据网格中,例如,如果该行的数据提供程序具有布尔值,则显示一个复选框。当值为非布尔值时使用默认项渲染器。
基本上,我希望使用代理对象(尽管不一定是代理类),以便我可以将其所有职责委托给子渲染器的渲染器。
很难解释。
编辑 1
我认为以下内容更清楚地说明了我的想法。这只是为了展示想法而快速敲打。
SwitchingRenderer.as
package com.example
{
import mx.controls.CheckBox;
import mx.controls.dataGridClasses.DataGridItemRenderer;
import mx.controls.listClasses.BaseListData;
import mx.controls.listClasses.IDropInListItemRenderer;
import mx.core.IDataRenderer;
import mx.core.UIComponent;
public class SwitchingRenderer extends UIComponent implements IDataRenderer, IDropInListItemRenderer
{
private var checkboxRenderer:CheckBox;
private var defaultRenderer:DataGridItemRenderer;
private var currentRenderer:IDataRenderer;
public function SwitchingRenderer()
{
this.checkboxRenderer = new CheckBox();
this.defaultRenderer = new DataGridItemRenderer();
this.currentRenderer = defaultRenderer();
super();
}
public function get data():Object
{
//If the data for this cell is a boolean
// currentRender = checkBoxRenderer
// otherwise
// currentRenderer = defaultRenderer
}
public function set data(value:Object):void
{
currentRenderer.data = value;
}
public function get listData():BaseListData
{
return currentRenderer.listData;
}
public function set listData(value:BaseListData):void
{
currentRenderer.listData = value;
}
}
}
【问题讨论】:
标签: apache-flex proxy decorator itemrenderer