2011-10-03 68 views
0

我公司的一個應用程序通過以屏幕爲中心的內容控件顯示彈出窗口,該內容控件在需要時隱藏起來,並在其後面放置一個徑向漸變矩形以阻止其餘部分用戶界面,加上它看起來不錯。我正在嘗試爲矩形和彈出窗口顯示時添加動畫,而不是彈出。輸入動畫效果很好,但當我的彈出窗口關閉時,從不調用退出動畫,並且輸入動畫的效果保持不變。EnterActions動畫不停止,ExitActions動畫未啓動

我的XAML如下:

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Panel.ZIndex="999" DataContext="{Binding Source={x:Static popup:PopUpService.Instance}}" IsHitTestVisible="{Binding IsPopUpVisible}" Opacity="0"> 
     <Rectangle Fill="{DynamicResource RadialBlackToBlack}" /> 
     <ItemsControl Focusable="False" ItemsSource="{Binding PopUps}"> 
      <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <Grid IsItemsHost="True" /> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
     </ItemsControl> 
     <Grid.Style> 
      <Style TargetType="Grid"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding IsPopUpVisible, Source={x:Static popup:PopUpService.Instance}}" Value="True"> 
         <DataTrigger.EnterActions> 
          <BeginStoryboard> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetProperty="Opacity" 
             To="100" Duration="0:0:1"/> 

           </Storyboard> 
          </BeginStoryboard> 

         </DataTrigger.EnterActions> 
         <DataTrigger.ExitActions> 
          <BeginStoryboard> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetProperty="Opacity" 
             To="0" Duration="0:0:1" /> 
           </Storyboard> 
          </BeginStoryboard> 
         </DataTrigger.ExitActions> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Grid.Style> 
    </Grid> 

它是什麼,我做錯了嗎?

謝謝。

回答

1

不透明度應動畫到1而不是100,這會導致問題。 (從1001動畫是不可見的,並且從10最後一位得到的小動畫時)

也許你也想擺脫冗餘:

  1. 不要設置屬性的兩倍或不必要地,在Storyboards和所有HoldEnds上刪除Duration,即默認值。
  2. 爲什麼在第一個SB中有AutoReverse
+0

但是,當IsPopUpVisible變爲false時,觸發條件不再滿足,退出動畫應該觸發,不是嗎? IsPopUpVisible不會使彈出窗口立即隱藏,我打算通過將不透明度設置爲0來退出動畫。 –

+0

@SoManyGoblins:編輯了我的答案,我觀察到代碼中的一些重大延遲,因爲動畫從'100 '到'0',只有​​在'1'時可以看到一個區別(有效範圍是'0'到1'),但最終它確實使網格不可見。 –