XAML 每N秒 Flink 一次图像元素时间WPF

vd8tlhqk  于 2022-12-07  发布在  Flink
关注(0)|答案(1)|浏览(156)

我尝试将样式设置为每0.5秒 Flink 一次图像,持续时间为6秒,但无法停止动画,尽管我将图像元素样式设置为空,但动画仍在继续
这种风格我已经试过了

<Style x:Key="imgBlink" TargetType="Image">
        <Style.Triggers>
            <Trigger Property="Opacity" Value="1">
                <Trigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard Name="blinkEffect" RepeatBehavior="1x">
                            <DoubleAnimation Storyboard.TargetProperty="(Image.Opacity)"  From="1" To="0" Duration="0:0:0.5" AutoReverse="True"/>
                        </Storyboard>
                    </BeginStoryboard>
                </Trigger.EnterActions>
            </Trigger>
        </Style.Triggers>
    </Style>

这是我为图像元素指定Style时代码

private void BtnLocateDevice_Click(object sender, RoutedEventArgs e)
{
   try
   {
      if (this.ImageElementReference != null)
      {
           var sb = Application.Current.FindResource("imgBlink") as Style;
           if (sb != null) 
           {
                this.ImageElementReference.Style = sb;
           }
      }
    }
    catch (Exception ex)
    {
            writeDebugLog(ex.Message);
            writeDebugLog(ex.StackTrace);
    }
}

任何人都可以帮我谢谢你。

p3rjfoxz

p3rjfoxz1#

将样式设置为null应该就可以了!您也可以尝试:
1.定义默认样式

<Style x:Key="imgNoBlink" TargetType="Image" />

然后,您可以使用它来显示非动画图像。

if (Application.Current.FindResource("imgNoBlink") is Style sb) 
    ImageElementReference.Style = sb;

1.或者

ImageElementReference.Style = new Style(typeof(Image));

1.或者,可以清除当前样式的EnterActions for Opacity属性

var opacityTrigger = ImageElementReference.Style.Triggers
                .First(t => ((Trigger)t).Property.Name == "Opacity");
opacityTrigger.EnterActions.Clear();

相关问题