好像有一個未公開的(它標誌着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