2017-10-13 4 views
0

Je travaille sur xamarin.forms et je veux démarrer une animation lorsque la source de l'image est modifiée.Comment implémenter une animation lorsque la source d'image a changé?

  <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> 

La source d'image est se lier à une variable dans le ViewModel et sera modifié si l'utilisateur cliquez sur l'image et obtenir une réponse positive du serveur. Ensuite, la nouvelle image sera affichée avec une animation personnalisée, alors où puis-je déclencher cette animation puisque la source de l'image a changé? J'ai lu le tutoriel "Behavior" et "Trigger" en ligne, il semble qu'il pourrait déclencher une animation par un événement, mais la classe Image n'a pas un tel événement "SourceChanged".

Répondre

1

Vous pouvez utiliser la méthode 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); 
      }); 
    } 
}