在一个WPF项目中,我有一个ItemsControl绑定到ViewModel的集合。它的ItemTemplate包含一个Image控件,绑定到对象集合的属性。我有一个计时器,每分钟从JSON服务获取新的图像,并将它们分配给与Image绑定的属性。
我想做的是在该属性更改时触发一个简单的动画。特别地,我想在为我的属性分配新图像之前触发一个简单的淡出动画,这将涉及PropertyChanging事件,以及在PropertyChanged上淡入动画,这样我就可以在视图中平稳地过渡从旧图像到新图像。
我尝试了以下来自另一个问题,但那会在属性更改后触发动画,这不是我想要的:
任何帮助都将不胜感激。
我想做的是在该属性更改时触发一个简单的动画。特别地,我想在为我的属性分配新图像之前触发一个简单的淡出动画,这将涉及PropertyChanging事件,以及在PropertyChanged上淡入动画,这样我就可以在视图中平稳地过渡从旧图像到新图像。
我尝试了以下来自另一个问题,但那会在属性更改后触发动画,这不是我想要的:
<Image
x:Name="ChannelImage"
Width="230" Height="230"
Source="{Binding ImageByteArray, Converter={StaticResource ByteArrayToBitmapImageConverter},
NotifyOnTargetUpdated=True}">
<Image.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="ChannelImage"
Storyboard.TargetProperty="Opacity"
BeginTime="0:0:0"
Duration="0:0:1"
To="0"/>
<DoubleAnimation
Storyboard.TargetName="ChannelImage"
Storyboard.TargetProperty="Opacity"
BeginTime="0:0:2"
Duration="0:0:1"
To="1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Image.Triggers>
</Image>
任何帮助都将不胜感激。
AnimatedContentControl.cs
、IStoryboardFinder.cs
、ResourceDictionaryStoryboardFinder.cs
、AnimatedContentControlDefaultStyle.xaml
和Generic.xaml
复制到您的项目中。两个xaml文件必须位于名为Themes
的文件夹中。之后,您只需像在MainWindow.xaml
中所做的那样绑定内容属性即可。 - feO2x