[英]Flex switch item-renderer
我想知道是否有人對以下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;
}
}
}
如果您使用的是Flex 4 Spark組件,請查看itemRendererFunction,
這是來自互連網的一個很好的示例 。
不幸的是,Flex 3組件(例如DataGrid)不支持該組件。
如果發送到itemRenderer中的數據不是布爾值,則對於要顯示的內容有點不確定。 但是,您可以根據數據更改事件輕松地修改組件的外觀,包括交換組件子項的可見屬性,更改狀態或更改ViewStack的selectedIndex。 所有這些事情都可以在沒有問題的itemRenderer中完成。
編輯:
基於用戶的其他發布,我要補充一點,他可以執行的操作如下:
public function get data():Object
{
if(this.data is Boolean){
checkBoxRenderer.visible = true;
defaultRenderer.visible = false;
} else {
checkBoxRenderer.visible = false;
defaultRenderer.visible = true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.