如何在Image源更改时实现动画?

时间:2017-10-13 12:16:04

标签: animation xamarin.forms

我正在研究xamarin.forms,并希望在更改图像源时启动动画。

           <ListView >
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <Image Source="{Binding FavoriteImage}" x:Name="favoriteImage">
                                 <Image.GestureRecognizers>
                                     TapGestureRecognizer Command="{Binding Source={x:Reference CurrentPage},Path=BindingContext.ClickLikedCommand}"  CommandParameter="{Binding .}" NumberOfTapsRequired="1"/>
                                 </Image.GestureRecognizers>
                            </Image>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

图像源绑定到ViewModel中的变量,如果用户单击图像并从服务器获得成功响应,则会更改图像源。然后新的图像将显示一些自定义动画,所以我可以在哪里触发此动画,因为图像源已更改? 我在线阅读了“行为”和“触发器”教程,似乎它可以通过事件触发动画,但Image类没有这样的“SourceChanged”事件。

1 个答案:

答案 0 :(得分:2)

您可以使用OnPropertyChanged方法:

public class ExImage : Image
{
    protected override void OnPropertyChanged(string propertyName = null)
    {
        base.OnPropertyChanged(propertyName);

        if (propertyName == nameof(Source))
            Device.BeginInvokeOnMainThread(async () =>
            {
                await this.ScaleTo(1.2);
                await this.ScaleTo(1);
            });
    }
}