XAML Storyboard Fadein - Петля непрозрачности Fadeout - PullRequest
1 голос
/ 24 сентября 2011

В моем приложении WPF у меня есть ListBox, который я настраиваю ItemTemplate. Внутри моего ItemTemplate у меня есть граница для выбранного элемента, которую я использую StoryBoard для постепенного увеличения / уменьшения от 0 до 1, затем от 1 до 0.

Я сейчас пытаюсь выяснить, как сделать это петлей.

Я попытался просто добавить второй параметр Trigger Proprty для случая, когда значение непрозрачности было равно 0, но в итоге это применилось ко всем элементам в ListBox, а не только к выбранному элементу.

<Storyboard x:Key="FadeUpAndFlash">
<DoubleAnimation From="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Duration="0:0:1" FillBehavior="Stop"/></Storyboard>


<Border x:Name="HighlightBorder" BorderBrush="Yellow" BorderThickness="3" Margin="0,0,5,0" CornerRadius="10" ClipToBounds="True">
<Border.Style>
    <Style TargetType="{x:Type Border}">
        <Setter Property="Opacity" Value="0"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
                <DataTrigger.Setters>
                    <Setter Property="Opacity" Value="1"/>
                </DataTrigger.Setters>
                <DataTrigger.EnterActions>
                    <BeginStoryboard Storyboard="{StaticResource FadeUpAndFlash}" Name="AnimateImageBorder" />
                </DataTrigger.EnterActions>
            </DataTrigger>
            <Trigger Property="Opacity" Value="1">
                <Trigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:2"/>
                        </Storyboard>
                    </BeginStoryboard>
                </Trigger.EnterActions>
            </Trigger>
        </Style.Triggers>
    </Style>
</Border.Style>

Есть идеи, как заставить цикл раскадровки?

1 Ответ

2 голосов
/ 24 сентября 2011

Используйте AutoReverse="True" в вашем DoubleAnimation.
и RepeatBehavior="Forever", если хотите сделать его бесконечным.

...