我需要在背景圖像上淡入淡出效果。在運行時間期間,可以更改圖像源,這與設置的綁定一起工作。無論如何,對應的動畫不會帶來任何視覺效果。此刻我的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