2010-10-21 60 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,則此示例按預期工作。

相關問題