2011-10-07 106 views
6

我有一個按鈕,當點擊時,使堆棧面板消失的按鈕。我想將隱藏的可視化過渡表單設置爲動畫,但一直未能。WPF堆棧面板可見性動畫

我四處張望了一會兒,撞到東西,看起來像這樣:

<StackPanel Margin="80,60,60,80" Background="Gray"> 
      <StackPanel.Triggers > 

       <EventTrigger > 
        <EventTrigger.Actions> 
         <BeginStoryboard> 
          <Storyboard TargetProperty="Visibility"> 

           <DoubleAnimation Duration="0:0:5:0" From="Visible" To="Hidden"/> 

          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger.Actions> 
       </EventTrigger> 

      </StackPanel.Triggers> 
      <Button Name="buttonTop" Content="TOP" Margin="40,40,40,40" Click="buttonTop_Click" Width="131" /> 
     </StackPanel> 

這當然不是100%的還沒有。有任何想法嗎?

感謝名單

回答

10

您可以使用

<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemsHost" 
           Storyboard.TargetProperty="Visibility"> 
    <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/> 
</ObjectAnimationUsingKeyFrames> 

這是一個故事板,其中KeyTime描述了當值應該設置的時間幾乎是一個二傳手。 ,所以該完整故事板會是這樣:

<BeginStoryboard> 
    <Storyboard> 
     <DoubleAnimation Storyboard.TargetProperty="Opacity" 
         To="0" Duration="0:0:5.0"/> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"> 
      <DiscreteObjectKeyFrame KeyTime="0:0:5.0" Value="{x:Static Visibility.Hidden}"/> 
     </ObjectAnimationUsingKeyFrames> 
    </Storyboard> 
</BeginStoryboard> 

編輯:如何使單擊按鈕時的故事板觸發:

<Button Content="Button" HorizontalAlignment="Left" Margin="337,221,0,0" VerticalAlignment="Top" Width="75"> 
    <Button.Triggers> 
     <EventTrigger RoutedEvent="Button.Click"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetProperty="Opacity" 
       To="0" Duration="0:0:5.0"/> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"> 
         <DiscreteObjectKeyFrame KeyTime="0:0:5.0" Value="{x:Static Visibility.Hidden}"/> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Button.Triggers> 
</Button> 
+0

感謝您的詳細解答。它運作良好。如何設置它,使其在點擊按鈕時激活? – hikizume

+0

我編輯它。 – AkselK

+0

非常好。非常感謝! – hikizume

4

Visibiltiy是一個離散值 - 這是開或關,所以動畫仍然會導致突然消失,而不是逐漸淡出。您可以改爲將StackPanelOpacity從1設爲0,然後在此之後將Visibilty設爲Hidden(或Collapsed)。

+1

我理解的想法,但因爲我很新的WPF我缺乏將這個想法轉化爲代碼的知識。更多詳細的答案將不勝感激。 – hikizume