组件在表单上不可见

时间:2011-08-01 11:52:23

标签: flex components

如果用户无权更改值,我创建了一个非常简单的组件来替换隐藏表单上的任何组件(例如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 个答案:

答案 0 :(得分:2)

我认为问题在于绑定不会更新标签上的属性。而不是使用绑定,只需手动更新它们,请执行以下操作:

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

如果这不起作用,您必须向我们展示您的表单以及定位和显示ReadOnlyPlaceHolder的布局代码。