flex - 在 Flex ToggleButtonBar上,会丢失CSS样式,更改菜单栏

  显示原文与译文双语对照的内容
0 0

就像标题所描述的那样,更改 Flex ToggleButtonBar上的菜单栏会使所有样式消失。 只在再次点击按钮后才出现。 谁能提供修复?

注意我正在使用 Flex 3.6. 下面的代码可以看到这种行为。 单击任一按钮可更改标签字段,在栏中,选定按钮的样式消失:


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
 layout="vertical">

<mx:Style>

. myStyle 
 { 
 buttonStyleName:"tabStyle";
 selectedButtonTextStyleName:"tabTextSelected";
 }

. tabStyle 
 { 
 color: #000000;
 }

. tabTextSelected
 {
 color: #FF0000;
 } 

</mx:Style>

<mx:ToggleButtonBar id="myToggleButtonBar" styleName="myStyle"
 labelField="title0">

 <mx:dataProvider>
 <mx:Object title0="Apple" title1="Pomme"/>
 <mx:Object title0="Cherry" title1="Cerise"/> 
 </mx:dataProvider>

</mx:ToggleButtonBar>

<mx:Button label="title0" click="{myToggleButtonBar.labelField = 'title0' }"/> 
<mx:Button label="title1" click="{myToggleButtonBar.labelField = 'title1' }"/> 

</mx:Application>

时间: 原作者:

0 0

我相信这里的问题不是因为样式丢失了,所以当你更改 labelFieldToggleButtonBarselectedIndex 属性( 。重置选中的标签) 时,这是一个错误。 这似乎是一个公平的事情,当你改变像 dataProvider的标签( 或者影响如何从 dataProvider 中提取标签的东西)的标签。

解决办法:在更改 labelField 之前,获取 selectedIndex 并将它的设置为 ToggleButtonBar:


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
 layout="vertical">

 <mx:Style>

. myStyle 
 { 
 buttonStyleName:"tabStyle";
 selectedButtonTextStyleName:"tabTextSelected";
 }

. tabStyle 
 { 
 color: #000000;
 }

. tabTextSelected
 {
 color: #FF0000;
 }

 </mx:Style>
 <mx:Script>
 <![CDATA[
 private function toggleLabelField():void
 {
 var currentLabelField:String = myToggleButtonBar.labelField;
 var currentTab:int = myToggleButtonBar.selectedIndex;
 trace("selectedIndex before changing labelField:" + currentTab);
 var newLabelField:String = currentLabelField == 'title0'? 'title1' : 'title0';
 myToggleButtonBar.labelField = newLabelField;
 trace("selectedIndex after changing labelField:" + myToggleButtonBar.selectedIndex);
 myToggleButtonBar.selectedIndex = currentTab;
 }
 ]]>
 </mx:Script>

 <mx:ToggleButtonBar id="myToggleButtonBar" styleName="myStyle"
 labelField="title0">

 <mx:dataProvider>
 <mx:Object title0="Apple" title1="Pomme"/>
 <mx:Object title0="Cherry" title1="Cerise"/> 
 </mx:dataProvider>

 </mx:ToggleButtonBar>

 <mx:Button label="title0" click="{myToggleButtonBar.labelField = 'title0' }"/> 
 <mx:Button label="title1" click="{myToggleButtonBar.labelField = 'title1' }"/>
 <mx:Button label="toggle it" click="toggleLabelField()"/>

</mx:Application>

原作者:
...