Компонент не отображается в форме - PullRequest
0 голосов
/ 01 августа 2011

Я сделал очень простой компонент для замены любого компонента (например, comboBox) в форме, которая скрыта, если у пользователя нет доступа для изменения значения:

<?xml version="1.0" encoding="utf-8"?>
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml"
          visible="{!_controlToReplace.visible}"
          includeInLayout="{!_controlToReplace.includeInLayout}">
    <mx:Script>
        <![CDATA[
            import mx.core.UIComponent;
            [Bindable]
            private var _controlToReplace:UIComponent;

            public function set controlToReplace(value:UIComponent):void
            {
                _controlToReplace=value;
            }
        ]]>
    </mx:Script>
</mx:Label>

Те же функциональные возможностиКомпонент может быть легко сделан с помощью ярлыка в форме:

<mx:Label text="{objControl.text}"
visible="{!objControl.visible}"
includeInLayout="{!objControl.includeInLayout}"/>

С помощью компонента я могу сделать это, что мне нравится больше:

<Components:ReadOnlyPlaceHolder controlToReplace="{objControl}"/>

Но независимо от того, илине objControl виден, он не отображается.Ты хоть представляешь, чего мне не хватает?

1 Ответ

2 голосов
/ 01 августа 2011

Я считаю, что проблема в том, что привязка не обновляет свойства метки.Вместо использования привязки, просто обновите их вручную, например:

public function set controlToReplace(value:UIComponent):void
{
    _controlToReplace=value;
    visible = !_controlToReplace.visible;
    includeInLayout = !_controlToReplace.includeInLayout;
}

Если это не сработает, вам нужно будет показать нам свою форму и код макета, который позиционирует и отображает ваш ReadOnlyPlaceHolder.

...