Этот вопрос существует на очень теоретическом уровне. Мне не ясно, что вы пытаетесь достичь, или какие свойства вы устанавливаете в своем классе компонентов. Я подозреваю, что есть проблема архитектуры, если у вас есть 20 свойств, и каждое из них должно как-то соотноситься с разными состояниями кожи.
Однако я могу попытаться ответить на ваши конкретные вопросы.
Is there any way to directly expose a bindable property from the
класс компонента хоста, поэтому при определении класса скина он напрямую
готов к чтению с?
При создании Flex MobileSkins они рекомендуют создать свойство с именем hostComponent, которое дает классу скина ссылку на класс компонента. Скины MXML уже имеют аналогичное свойство . Если вы используете пользовательский скин, это свойство создается автоматически с использованием метаданных HostComponent
. Поэтому из класса скина вы можете получить доступ к свойствам класса компонента, используя свойство hostComponent.
Допустим, у вас есть пользовательская кнопка с логическим свойством
«Выбрано». В классе скинов вы хотите добавить в get и set
функция для свойства selected, поэтому вы можете выполнить какое-либо действие
на вашей коже, когда бы она ни была установлена.
Я не представляю ситуацию, когда вы захотите это сделать. Как правило, вы не определяете какие-либо свойства класса скина, которые вы намерены явно изменить в экземпляре класса скина.
Вы можете отправить событие из класса компонента при изменении свойства. [Это очень распространено]. Затем прослушайте это событие в классе скина, используя свойство hostComponent, и измените его там.
Существует также способ доступа к экземпляру класса скина из класса компонента. Таким образом, вы можете изменить свойства непосредственно в классе скина, используя свойство skin .
Я бы не стал следовать ни одному подходу, не продумав его. В идеале класс компонента и класс скина должны быть заключены друг в друга; и каждый подход обеспечил бы зависимости.