0

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}">
4

1 に答える 1

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>

グリッド:

<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 を使用すると、システムからメッセージを受信せず、アニメーションが機能しません。プロパティ「Hidden」はメッセージを受け取るはずですが、アニメーションほどうまく機能していないため、例ではopacityを使用しました。

于 2013-04-28T15:07:23.237 に答える