我需要在背景图像上淡入淡出效果。在运行时间期间,可以更改图像源,这与设置的绑定一起工作。无论如何,对应的动画不会带来任何视觉效果。此刻我的XAML如下所示:UWP - 对背景图像淡入效果
xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
xmlns:Media="using:Microsoft.Xaml.Interactions.Media"
<Page.Content>
<Grid>
<Grid.Background>
<ImageBrush x:Name="image" ImageSource="{Binding Path=ImageSource,UpdateSourceTrigger=PropertyChanged}" Stretch="UniformToFill" >
<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior EventName="ImageOpened" >
<Media:ControlStoryboardAction ControlStoryboardOption="Play">
<Media:ControlStoryboardAction.Storyboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:1" Storyboard.TargetName="image"/>
</Storyboard>
</Media:ControlStoryboardAction.Storyboard>
</Media:ControlStoryboardAction>
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</ImageBrush>
</Grid.Background>
当我使用来代替:
[...]
<Media:ControlStoryboardAction.Storyboard>
<Storyboard>
<FadeInThemeAnimation Storyboard.TargetName="Image" />
</Storyboard>
</Media:ControlStoryboardAction.Storyboard>
我得到
System.Runtime.InteropServices.COMException:未检测到安装的组件。
无法解析TargetName图像。在Microsoft.Xaml.Interactions.Media.ControlStoryboardAction.Execute(对象发件人,对象参数) 在Microsoft.Xaml.Interactivity.Interaction.ExecuteActions(Object())上的Windows.UI.Xaml.Media.Animation.Storyboard.Begin() ( )发件人,ActionCollection操作,对象参数) at Microsoft.Xaml.Interactions.Core.EventTriggerBehavior.OnEvent(Object sender,Object eventArgs)
任何想法?
[编辑] 感谢@SWilko的回答,我确定动画只对图像有效。我上面的代码工作,如果我将ImageBrush更改为图像,并将其放入网格(不Grid.Background)。
谢谢@Swilko的解决方案。我在运行时多次设置图像。一旦动画被执行,不透明度为1.我必须将每个动画的不透明度重置为0。我怎样才能做到这一点? – Briefkasten
添加代码后面的方式,但你的方式很多更简单:) – SWilko