Как определить пользовательские "группы содержимого" в пользовательском компоненте Flex 4?
Например, компонент панели зажигания можно записать так
<Panel title="Skinny">
<child components ... />
<controlBarGroup>
<child control bar components ... />
</controlBarGroup>
</Panel>
А его файл обложки будет обрабатывать макет contentGroup, controlBarGroup и titleDisplay. Однако обратите внимание, что contentGroup не отображается в приведенном выше коде и что controlBarGroup принимает дочерние компоненты mxml.
Теперь, скажем, я хочу создать пользовательский компонент, который определяет различные обязательные и необязательные скины, такие как headerGroup, navigationGroup и accountPreferencesGroup. Я хотел бы написать этот пользовательский компонент, как это
<MyComp>
<headerGroup>
<child components .../>
</headerGroup>
<navigationGroup>
<child components .../>
</navigationGroup>
<accountPreferencesGroup>
<child components .../>
</accountPreferencesGroup>
</MyComp>
Мотивация заключается в том, что теперь я могу создать пару разных файлов скинов, чтобы изменить внешний вид и расположение этих подгрупп. При чтении источника панели spark, есть некоторые вызовы в пространстве имен mx_internal, такие как getMXMLContent(), который является методом компонента группы spark, но к которому у меня нет доступа.
Имеет ли смысл приведенное выше описание? Как я могу создать собственные "группы содержимого" в моем пользовательском компоненте Flex4, который может использовать вложенные дочерние компоненты mxml? Должен ли я подойти к этому по-другому?
2 ответа
Я недавно наткнулся на этот пост в блоге. Я думаю, это дает довольно хорошее объяснение того, о чем вы говорите.
http://saturnboy.com/2010/07/multiple-content-area-containers/
Итак... проработав немного больше... я обнаружил, что можно использовать пространство имен mx_internal, добавив следующее
import mx.core.mx_internal; использовать пространство имен mx_internal;
Adobe использует это пространство имен для обозначения методов и свойств, которые могут измениться в будущем, поэтому они используют это пространство имен для сокрытия вещей.
Если вы будете следовать коду в Panel.as, вы можете получить эту работу и определить свои собственные области содержимого.