Связывание не зависит от свойств; Вы можете получить преимущества связывания с полями или свойствами.
Похоже, вы что-то упустили, может быть? Например, следующие MXML и AS работают для привязки как поля, так и свойства, когда класс и его экземпляр помечены как Bindable:
package
{
[Bindable]
public class MyFoo
{
public var myPublicField:int;
private var _myPrivateField:int;
public function MyFoo()
{
myPublicField = 0;
myPublicProperty = 0;
}
public function get myPublicProperty():int
{
return _myPrivateField;
}
public function set myPublicProperty(value:int):void
{
_myPrivateField = value;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
[Bindable]
private var myFoo:MyFoo;
private function increment():void
{
if (!myFoo)
myFoo = new MyFoo();
myFoo.myPublicField += 1;
myFoo.myPublicProperty += 1;
}
private function replace():void
{
myFoo = new MyFoo();
}
]]>
</mx:Script>
<mx:VBox>
<mx:HBox>
<mx:Label text="Field:" />
<mx:Text text="{myFoo.myPublicField}" />
</mx:HBox>
<mx:HBox>
<mx:Label text="Property:" />
<mx:Text text="{myFoo.myPublicProperty}" />
</mx:HBox>
<mx:Button label="Increment Both Counts" click="increment()" />
<mx:Button label="Replace with New Foo" click="replace()" />
</mx:VBox>
</mx:Application>
Кстати, эффект был бы таким же, если бы вы пометили поле и свойство Bindable отдельно, а не пометили класс, который является просто сокращением для одной и той же вещи. Также обратите внимание, что myFoo по умолчанию начинается с нуля, как и в вашем примере кода (т. Е. Назначение "= null" является избыточным).
Этот пример помогает? Если нет, оставьте комментарий, и я проверю обратно. Надеюсь, что это так!