To achieve this:
You need two images in your resource folder. whitehearticon3.png & pinkhearticon3.png
There should be one Boolean property which changes when we tap on Heart icon.
private bool _isLiked;
public bool IsLiked
{
get { return _isLiked; }
set
{
_isLiked = value;
OnPropertyChanged("IsLiked");
}
}
Now you can use the DataTrigger
on Image to change the image source based on the value of this property.
<Image Grid.Row="0" Grid.Column="5" Margin="0,10,0,0">
<Image.GestureRecognizers>
<TapGestureRecognizer Command="{Binding HeartTapCommand}" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
<Image.Triggers>
<DataTrigger TargetType="Image" Binding="{Binding IsLiked}" Value="True">
<Setter Property="Source" Value="pinkhearticon3.png"/>
</DataTrigger>
<DataTrigger TargetType="Image" Binding="{Binding IsLiked}" Value="False">
<Setter Property="Source" Value="whitehearticon3.png"/>
</DataTrigger>
</Image.Triggers>
</Image>
In your ViewModel you would be having the HeartTapCommand
as follows:
ICommand HeartTapCommand { get; set; } = new Command (() => { IsLiked = !IsLiked; });
You should bind this command on Image TapGuesture
, so when you tap on image, this command will get executed and you can switch between your two Heart icons.