【问题标题】:Activate Storyboard on Visibility Changed在可见性更改时激活情节提要
【发布时间】:2014-04-19 07:41:25
【问题描述】:

目前我有一个Image,它在加载时会发出脉冲。当我更改图像的可见性时,我想激活情节提要。但我看到Image.Triggers 必须是EventTriggers

我需要挂钩哪个事件?

<Image.Triggers>
    <EventTrigger RoutedEvent="Image.Loaded">
        <BeginStoryboard>
             <Storyboard>
                 <DoubleAnimation Storyboard.TargetName="MandateErrorImage"
                                  Storyboard.TargetProperty="Opacity"
                                  From="1.0" To="0.1" Duration="0:0:0.5"
                                  AutoReverse="True" RepeatBehavior="0:0:2" />
             </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Image.Triggers>

【问题讨论】:

  • 热门问题。我也需要这个问题的答案。在互联网上的任何地方都找不到它

标签: c# wpf xaml mvvm storyboard


【解决方案1】:

在 WPF 中有一个事件UIElement.IsVisibleChanged,但它是一个 CLR 事件,而不是一个路由事件,因此在 EventTrigger 中不能使用。

在这种情况下,像这样在DataTrigger 中使用IsVisible 属性:

<Window.Resources>
    <Style x:Key="AnimationImageStyle" TargetType="{x:Type Image}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=IsVisible}" 
                         Value="True">

                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                             From="1.0" To="0.1"
                                             Duration="0:0:0.5"
                                             AutoReverse="True"
                                             RepeatBehavior="0:0:2" />
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

<Grid>
    <Image Name="TestImage" 
           Style="{StaticResource AnimationImageStyle}" 
           Source="Enter.jpg"
           Width="400"
           Height="400" />        
</Grid>

【讨论】:

    【解决方案2】:

    如果您想在 DependencyProperty 或绑定值上制作动画,您需要为您的图像创建一个 Style 并将动画放入样式中。

    当您的图像的Visibility 设置为Visible 时,以下Style 将执行您的动画:

        <Style x:Key="FlashingImageStyle" TargetType="{x:Type Image}">
            <Style.Triggers>
                <Trigger Property="Visibility" Value="Visible">
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation
                                      Storyboard.TargetProperty="Opacity"
                                      From="1.0" To="0.1" Duration="0:0:0.5"
                                      AutoReverse="True" RepeatBehavior="0:0:2" />
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                </Trigger>
            </Style.Triggers>
        </Style>
    

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 2018-07-01
      相关资源
      最近更新 更多