这是代码。这是basicly BindingUtils.bindProperty的副本是建立一个组合框,这样二者组合框和模型更新当两个变化。
public static function bindProperty2(site:Object, prop:String, host:Object, chain:Object, commitOnly:Boolean = false):ChangeWatcher
{
var cbx:ComboBox = null;
if (site is ComboBox) { cbx = ComboBox(site); }
if (host is ComboBox) { cbx = ComboBox(host); }
var labelField:String = "listID";
var w:ChangeWatcher = ChangeWatcher.watch(host, chain, null, commitOnly);
if (w != null)
{
var func:Function;
if (site is ComboBox)
{
func = function(event:*):void
{
var dp:ICollectionView = ICollectionView(site.dataProvider);
var selItem:Object = null;
for (var i:int=0; i<dp.length; i++)
{
var obj:Object = dp[i];
if (obj.hasOwnProperty(labelField))
{
var val:String = String(obj[labelField]);
if (val == w.getValue())
{
selItem = obj;
break;
}
}
}
site.selectedItem = selItem;
};
w.setHandler(func);
func(null);
}
else
{
func = function(event:*):void
{
var value:Object = w.getValue();
if (value == null)
{
site[prop] = null;
}
else
{
site[prop] = String(w.getValue()[labelField]);
}
};
w.setHandler(func);
func(null);
}
}
return w;
}
这似乎不会成为一个问题的答案 – rfunduk 2009-06-15 16:55:42