WPF Animate другой элемент управления после завершения первой анимации - PullRequest
0 голосов
/ 10 февраля 2020

Я оживляю текст в StatusBarItem (справа налево и затем непрозрачность два раза). Когда анимация заканчивается, она хотела бы показать кнопку, которая находится в другом StatusBarItem и по умолчанию имеет значение Visibility.Hidden . Как я могу сделать это в XAML?

Мой XAML - ошибка " В дереве раскадровки в стиле не может быть указано TargetName ":

   <StatusBarItem x:Name="Stat_info" DockPanel.Dock="Right" FontStyle="Italic" Height="23" Foreground="#FFB41414" FontWeight="Bold" Visibility="Hidden">

                <StatusBarItem.Style>

                    <Style TargetType="{x:Type StatusBarItem}">

                        <Style.Resources>
                            <Storyboard x:Key="flashAnimate">
                                <StringAnimationUsingKeyFrames Storyboard.TargetProperty="Content" >
                                    <DiscreteStringKeyFrame Value="T" KeyTime="0:0:0.3" />
                                    <DiscreteStringKeyFrame Value="Te" KeyTime="0:0:0.6" />
                                    <DiscreteStringKeyFrame Value="Tes" KeyTime="0:0:0.9" />
                                    <DiscreteStringKeyFrame Value="Test" KeyTime="0:0:1.2" />
                                 </StringAnimationUsingKeyFrames>

                                 <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" AutoReverse="True" BeginTime="0:0:1.4" Duration="0:0:2.0" RepeatBehavior="0:0:5.4" />

                                <!--This is a button that should be set to visible-->
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Btn_info" Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0:0:5.5" Value="{x:Static Visibility.Visible}"/>
                                </ObjectAnimationUsingKeyFrames>

                            </Storyboard>

                        </Style.Resources>

                        <Style.Triggers>
                            <DataTrigger Binding="{Binding ElementName= Stat_info, Path= IsVisible}" Value="True">
                                <Setter Property="Visibility" Value="Visible" />
                                <DataTrigger.EnterActions>
                                    <BeginStoryboard Name="flash" Storyboard="{StaticResource flashAnimate}" />
                                </DataTrigger.EnterActions>

                                <DataTrigger.ExitActions>
                                    <StopStoryboard BeginStoryboardName="flash"/>
                                </DataTrigger.ExitActions>
                            </DataTrigger>
                        </Style.Triggers>

                    </Style>

                </StatusBarItem.Style>

            </StatusBarItem>

РЕДАКТИРОВАТЬ:

Я пытался дать ответ по ссылке, но не могу заставить его работать. Я пробовал с & без TargetName и только для первой анимации. Результат без ошибок и без анимации:

 <Window.Resources>

        <ControlTemplate x:Key="StatusBarItemControlTemplate1" TargetType="{x:Type StatusBarItem}">

                        <ControlTemplate.Resources>
                            <Storyboard x:Key="myAnimation" Storyboard.TargetName="Stat_info">
                                    <StringAnimationUsingKeyFrames Storyboard.TargetProperty="Content" >
                                        <DiscreteStringKeyFrame Value="T" KeyTime="0:0:0.3" />
                                        <DiscreteStringKeyFrame Value="Te" KeyTime="0:0:0.6" />
                                        <DiscreteStringKeyFrame Value="Tes" KeyTime="0:0:0.9" />
                                        <DiscreteStringKeyFrame Value="Test" KeyTime="0:0:1.2" />
                                     </StringAnimationUsingKeyFrames>

                                     <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Stat_info" From="1" To="0" AutoReverse="True" BeginTime="0:0:1.4" Duration="0:0:2.0" RepeatBehavior="0:0:5.4" />

                             </Storyboard>
                        </ControlTemplate.Resources>
                        <ControlTemplate.Triggers>
                            <DataTrigger  Binding="{Binding ElementName= Stat_info, Path= IsVisible}" Value="True">
                                <Setter Property="Visibility" Value="Visible" />
                                <DataTrigger.EnterActions>
                                    <BeginStoryboard x:Name="beginAnimation"  Storyboard="{StaticResource myAnimation}" />
                                </DataTrigger.EnterActions>
                                <DataTrigger.ExitActions>
                                    <StopStoryboard  BeginStoryboardName="beginAnimation" />
                                </DataTrigger.ExitActions>
                            </DataTrigger>
                        </ControlTemplate.Triggers>

                        <!-- Content to be animated goes here -->

        </ControlTemplate>

    </Window.Resources>

   <StatusBarItem x:Name="Stat_info" Visibility="Hidden" Template="{StaticResource StatusBarItemControlTemplate1}" >
...