当前位置: > > > Flex4 - 在外部设置itemRenderer渲染器的属性

Flex4 - 在外部设置itemRenderer渲染器的属性

通过itemRenderer渲染器可以很方便的设置列表,表格等的条目样式。
有时如果想要在外部设置修改渲染器的属性,比如有一个渲染器想给两个组件使用,通过渲染器内部某个属性来判断是那个组件,这时就需要现在外部给该渲染器设置个属性。具体做法如下:

--- 主页面 ---
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   creationComplete="init(event)">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			
			protected function init(event:FlexEvent):void
			{
				var factory:ClassFactory = new ClassFactory(MyItemRenderer);
				factory.properties={type:"外部设置"};
				list.itemRenderer = factory;
			}
		]]>
	</fx:Script>
	<fx:Declarations>
		<s:ArrayList id="myData">
			<fx:Object text="项目1"/>
			<fx:Object text="项目2"/>
			<fx:Object text="项目3"/>
		</s:ArrayList>
	</fx:Declarations>
	<s:List id="list" dataProvider="{myData}" labelField="text" x="10" y="10"/>		
</s:Application>

--- 渲染器 MyItemRenderer.mxml ---
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
				xmlns:s="library://ns.adobe.com/flex/spark" 
				xmlns:mx="library://ns.adobe.com/flex/mx" 
				autoDrawBackground="true">
	<fx:Script>
		<![CDATA[
			[Bindable]
			public var type:String = "";
		]]>
	</fx:Script>
	<s:Label text="{type} {data.text}"/>
</s:ItemRenderer>

效果图如下:

 
评论0