Posts Tagged ‘binding’

StyleBindingUtils可以绑定样式的工具类

分类于 原创文章 一月 5th, 2010 by marco – 1 Comment

Flex自带的有一个BindingUtils类,可以把两个类的属性绑定起来,但是不能绑定样式(Style),样式是Flex中常用的特性,看其BindingUtils源码,绑定技术本身是依靠于ChangeWatcher,所以照着BindingUtils写一个可以绑定样式的方法。
StyleBindingUtils:

package org.beasy.binding.utils
{
	import mx.binding.utils.ChangeWatcher;
	import mx.styles.IStyleClient;
 
	/**
	 * Flex的绑定功能为我们的日常提供很多的方便
	 * 但是Flex只提供了属性的绑定类->BindingUtils;
	 * 如果要实现绑定控件的Style还要自己用ChangeWatcher去侦听事件
	 * 有了StyleBindingUtils这一切将变的简单
	 * StyleBindingUtils封装了ChangeWatcher进行了Style的绑定实现,
	 * 为您的开发提供了更多方便和快捷
	 * @author Marco
	 */
	public class StyleBindingUtils
	{
		public function StyleBindingUtils()
		{
		}
 
		public static function bindStyle(
			site:IStyleClient, prop:String,
			host:Object, chain:Object,
			commitOnly:Boolean = false):ChangeWatcher
		{
			var w:ChangeWatcher =
				ChangeWatcher.watch(host, chain, null, commitOnly);
 
			if(w != null )
			{
				var assign:Function = function(event:*):void
				{
					site.setStyle(prop, w.getValue());
				}
				w.setHandler( assign );
				assign(null);
			}
 
			return w;
		}
 
	}
}

read more »