我有两个相同类型的图像,一个是蓝色,另一个是粉红色,以模拟对该图像的单击,因此,当我单击该图像时,它会调用一个屏幕而不会先调用另一个图像。 我想要的是在调用另一个屏幕之前,单击蓝色的初始图像变为粉红色,然后才调用该屏幕。
<Image x:Name="CmdCalendario" Grid.Row="0" Grid.Column="0" Source="calendarioFiscallivre.png" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />
因此,我想先单击图像,然后再更改为后面代码中的粉红色图像,然后调用屏幕。
var CalendarioClick = new TapGestureRecognizer();
CalendarioClick.Tapped += (s, e) =>
{
CmdCalendario.Source = ImageSource.FromResource("Agtmovel.Img.calendarioFiscalpressed.png");
Navigation.PushAsync(new CalendarioFiscal());
}; CmdCalendario.GestureRecognizers.Add(CalendarioClick);
答案 0 :(得分:1)
CalendarioClick.Tapped
中的代码为synchronous
,它们将按顺序执行。 imageSoure
在推送到新页面之前确实已更改,但是更改过程非常快,甚至无法弄清。
解决方案:
您可以添加短暂的延迟,然后再推送到新页面。您可以定义延迟时间。
var CalendarioClick = new TapGestureRecognizer();
CalendarioClick.Tapped += async (s, e) =>
{
CmdCalendario.BackgroundColor = Color.Pink;
//Delay 2000ms, change the time you want here
await Task.Delay(2000);
Navigation.PushAsync(new CalendarioFiscal());
};
CmdCalendario.GestureRecognizers.Add(CalendarioClick);
答案 1 :(得分:0)
您可以使用FlexButton模拟图片点击
<flex:FlexButton
WidthRequest="76"
HeightRequest="76"
CornerRadius="38"
HorizontalOptions="Center"
Icon="lightbulb.png"
ForegroundColor="#ffffff"
HighlightForegroundColor="#49516F"
BackgroundColor="#6279B8"
HighlightBackgroundColor="#8EA4D2" />