2010-10-21 54 views
1

我在flex 4的DataGroup中找到了itemRenderer的一个非常恼人的问题,当我mouseout的itemRenderer返回到默认状态时。这里有一个例子:Flex:为什么DataGroup ItemRenderer的mouseOut会导致状态更改?

<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <s:BorderContainer> 
      <s:DataGroup> 
       <s:layout> 
        <s:VerticalLayout gap="1"/> 
       </s:layout> 

       <s:dataProvider> 
        <s:ArrayCollection> 
         <fx:Object title="One" /> 
         <fx:Object title="Two" /> 
         <fx:Object title="Three" /> 
        </s:ArrayCollection> 
       </s:dataProvider> 

       <s:itemRenderer> 
        <fx:Component> 
         <s:ItemRenderer> 
          <s:states> 
           <s:State name="expanded" /> 
           <s:State name="collapsed" /> 
          </s:states> 

          <fx:Script> 
           <![CDATA[ 
            private function expandCollapse():void 
            { 
             currentState = (currentState == "collapsed") ? "expanded" : "collapsed"; 
            } 
           ]]> 
          </fx:Script> 
          <s:VGroup> 
           <mx:Button click="expandCollapse();" label="Click me to hide the number" /> 
           <s:SkinnableContainer> 
            <s:VGroup height="0" height.expanded="NaN"> 
              <s:Label text="{data.title}" /> 
            </s:VGroup> 
           </s:SkinnableContainer> 
          </s:VGroup> 
         </s:ItemRenderer> 
        </fx:Component> 
       </s:itemRenderer> 
      </s:DataGroup> 
    </s:BorderContainer>  
</s:Application> 

当用户点击该按钮按预期在Vgroup处于折叠状态,但随后如果用户将鼠标移动的项目渲染那么它崩溃,即返回到其默认状态。

这是一个错误还是我错过了什么?

干杯,

克里斯

+0

只是一个简单的问题,你为什么使用'mx:Text'而不是's:Label'? – ocodo 2010-10-21 00:50:10

+0

这不是一个真正的应用程序,它只是一个快速设计的例子,我用它来展示有问题的行为。但是如果这样做会更清楚,我会将其更改为标签。 – ChrisInCambo 2010-10-21 01:06:38

回答

2

事实证明,ItemRenderer的已经有一些自己的状态。如果我们使用DataRenderer而不是ItemRenderer,则此示例按预期工作。

相关问题