Расширение пользовательских компонентов MXML через MXML - PullRequest
14 голосов
/ 03 февраля 2011

Что я хотел бы сделать: создать компонент MXML с несколькими дочерними элементами, а затем расширить его с помощью MXML, чтобы создать новый компонент с большим количеством дочерних элементов, не теряя при этом исходный набор.Другими словами

создать компонент bc.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">

    <s:Button id="b1" label="button1"/>
</s:BorderContainer>

, а затем расширить его до отдельного компонента mc.mxml

<?xml version="1.0" encoding="utf-8"?>
<borderContainerX:bc xmlns:fx="http://ns.adobe.com/mxml/2009" 
                     xmlns:s="library://ns.adobe.com/flex/spark" 
                     xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:borderContainerX="borderContainerX.*">

    <s:Button id="b2" y="100" label="button2"/>
</borderContainerX:bc>

и получить компонент с 2Кнопки.

Я видел различные темы о том, как это невозможно ( 1 ) или как обойти это ( 2 , 3 *).1016 *) и не знали, изменилось ли что-то с появлением Flex 4 или мы все еще застряли с этими обходными путями, последний ответ в потоке 3, кажется, намекает на то, что Flex 4 все исправляет?

1 Ответ

11 голосов
/ 07 февраля 2011

Во Flex 4 вам придется переопределить свой установщик свойства "mxmlContent", чтобы сохранить уже определенные дочерние элементы в родительском классе

Одна из возможных реализаций такого переопределения представлена ​​в комментарии к этой записи в блоге

Быстрый совет (Flex 4): шаблоны до свидания - привет mxmlContent

http://www.websector.de/blog/2009/10/02/quick-tip-flex-4-goodbye-templates-hello-mxmlcontent/

...