2011-10-07 86 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