Вы передаете свойству skinClass
экземпляр класса скина, а не фактический класс (который необходим кнопке для создания собственного экземпляра класса скина).
Если вы можете, лучше всего сделать collectionWorkspace
массивом объектов класса, а не экземпляров.
<s:ArrayCollection id="collectionWorkspace">
<fx:Class>yourPkg.Layout1</fx:Class>
<fx:Class>yourPkg.Layout2</fx:Class>
<fx:Class>yourPkg.Layout3</fx:Class>
<fx:Class>yourPkg.Layout4</fx:Class>
<fx:Class>yourPkg.Layout5</fx:Class>
</s:ArrayCollection>
Если вы не можете этого сделать,у вас должна быть возможность вытащить класс экземпляра и передать его skinClass
.
<s:Button skinClass="{Object(data).constructor}"/>
РЕДАКТИРОВАТЬ:
Привязка по умолчанию выиграла 't работает, потому что data
начинается с null
до того, как инициализируется с классом.Если вы дадите ему null
, вы получите исключение.Чтобы это исправить, вам нужно будет вернуть значение по умолчанию для времени между null
и значением:
<s:Button skinClass="{data != null ? data as Class : spark.skins.spark.ButtonSkin}"/>
Я пытался сделать это с ArrayCollection
, используя некоторые скины кнопок.Это сработало.