Как определить пользовательские "группы содержимого" в пользовательском компоненте 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, вы можете получить эту работу и определить свои собственные области содержимого.

Другие вопросы по тегам