如果用户无权更改值,我创建了一个非常简单的组件来替换隐藏表单上的任何组件(例如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是否可见,都不会显示。你知道我可能缺少什么吗?
答案 0 :(得分:2)
我认为问题在于绑定不会更新标签上的属性。而不是使用绑定,只需手动更新它们,请执行以下操作:
public function set controlToReplace(value:UIComponent):void
{
_controlToReplace=value;
visible = !_controlToReplace.visible;
includeInLayout = !_controlToReplace.includeInLayout;
}
如果这不起作用,您必须向我们展示您的表单以及定位和显示ReadOnlyPlaceHolder的布局代码。