2013-04-25 99 views
0

我想为弹出的边框设置动画,这个边框会在5秒内可见,然后折叠。当边框可见时,它仅在5秒内可见,然后折叠。每当边框可见时,都会重复此操作。我试过了,但它只出现过一次。有人可以向我解释我所犯的错误吗?如何查看边界/弹出5秒?

这里是我已经实现

<Grid.Resources> 
     <Style x:Key="NotificationStyle" TargetType="{x:Type Border}"> 
      <Style.Triggers> 
       <Trigger Property="Visibility" Value="Visible"> 
        <Trigger.EnterActions> 
         <BeginStoryboard x:Name="NotificationStoryBoard"> 
          <Storyboard > 
           <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Visibility)"> 
            <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Visible}"/> 

            <DiscreteObjectKeyFrame KeyTime="00:00:05" Value="{x:Static Visibility.Collapsed}"/> 
           </ObjectAnimationUsingKeyFrames> 
          </Storyboard> 
         </BeginStoryboard> 
        </Trigger.EnterActions> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Resources> 

这里是边境的风格...

<Border Name="NotifciationPopUp" Background="White" Height="80" Width="200" BorderBrush="Gray" BorderThickness="1" VerticalAlignment="Bottom" HorizontalAlignment="Left" Visibility="Collapsed" Margin="10,0,0,10" Style="{StaticResource NotificationStyle}"> 

回答

0

我意识到隐藏边框以这样的方式:

风格:

<Style x:Key="NotificationStyle" TargetType="{x:Type Border}"> 
    <Style.Triggers> 
     <Trigger Property="Visibility" Value="Visible"> 
      <Trigger.EnterActions> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetProperty="Opacity" BeginTime="0:0:0" From="0.0" To="1.0" Duration="0:0:1.0" /> 
         <DoubleAnimation Storyboard.TargetProperty="Opacity" BeginTime="0:0:5" From="1.0" To="0.0" Duration="0:0:1.0" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </Trigger.EnterActions> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

G排除:

<Grid> 
    <Border Name="MyBorder" Width="100" Visibility="Hidden" Height="50" BorderThickness="2" BorderBrush="OrangeRed" Style="{StaticResource NotificationStyle}"> 
     <TextBlock Text="Some information" TextAlignment="Center" VerticalAlignment="Center" /> 
    </Border> 

    <ToggleButton Name="MyButton" Content="Show border" Width="100" Height="30" VerticalAlignment="Bottom" Click="Button_Click" /> 
</Grid> 

在代码:

private void Button_Click(object sender, RoutedEventArgs e) 
{    
    if (MyButton.IsChecked == true) 
    { 
     MyBorder.Visibility = System.Windows.Visibility.Visible; 
    } 

    if (MyButton.IsChecked == false) 
    { 
     MyBorder.Visibility = System.Windows.Visibility.Hidden; 
    } 
} 

从他的实验,我的理解是,如果在动画中曾经使用的属性,然后使用它从动画的触发器是唯一可能的。因此,我没有收到的财产的访问代码。

此外,控制的使用Visibility = Collapsed,他不接收来自系统的消息,动画将无法工作。虽然属性“隐藏”应该带消息,但我没有像动画一样工作,所以在示例中我使用了不透明度