好像有一个未公开的(它标志着ASDOCs @private
)在名为enbaledField
的NavBar
组件属性。 TabBar
组件在其类层次结构中的某个点处延伸NavBar
。
下面是来自Apache的Flex GitHub库的代码(只是包含,所以你可以阅读ASDoc注释):
/**
* @private
* Storage for the enabled property.
*/
private var _enabledField:String = "enabled";
[Bindable("enabledFieldChanged")]
[Inspectable(category="Data")]
/**
* Name of the the field in the <code>dataProvider</code> object
* to use as the enabled label.
*
* @default "enabled"
*
* @langversion 3.0
* @playerversion Flash 11.1
* @playerversion AIR 3.4
* @productversion Flex 4.10
*/
public function get enabledField():String
{
return _enabledField;
}
所以理论上(我没有的Flex安装其一),如果在元素您的dataProvider
有一个名为enabled
的属性,您可以禁用TabBar
中的单个按钮。
或者,如果您想使用dataProvider元素中的其他字段来指示该按钮应该被启用/禁用,您可以在enableField
属性上设置一个新值。
该警告似乎是,ASDOC称这是第一次包含在Flex 4.10中。但我认为这很奇怪,因为这是一个较老的MX组件。但是,这可能是这个属性确实是在Flex 4.10中添加的。
如果这是真的,这只是在Flex 4.10中,那么你可以复制代码的各个位并按照@zeus的建议自行实现。特别记下了NavBar
类神奇在哪里发生的私有方法createNavChildren()
的:
//Check for enabled field and assign it to the individual button if it exists.
if (_enabledField != "" && item.hasOwnProperty(_enabledField) == true)
{
navItem.enabled = Boolean(item[_enabledField]);
}
else
{
navItem.enabled = enabled;
}
Here is a link到NavBar
类在具有以上所有的代码GitHub的回购。
看起来好像没有直接的解决方案,您可能需要扩展标签栏并覆盖数据提供程序属性。你的数据提供者对象将变成如下所示。 现在您必须重写updateDisplayList/commitProperties以启用或禁用子选项卡按钮。我现在没有安装flex,否则我会通过代码给你提供解决方案,但是上面的desc应该让你开始。 –
Zeus