我有相同的类型一个蓝色,粉红色等,以模拟在图像上点击的两幅图像,所以当我在图像上单击它调用一个屏幕,而不先调用其他图像。我要的是调用其它屏幕,点击即蓝色变为粉红色,然后才调用屏幕上的初始图像之前。
<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);
在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);
请参阅:Async and Await
您可以使用FlexButton在影像上模拟点击
<flex:FlexButton
WidthRequest="76"
HeightRequest="76"
CornerRadius="38"
HorizontalOptions="Center"
Icon="lightbulb.png"
ForegroundColor="#ffffff"
HighlightForegroundColor="#49516F"
BackgroundColor="#6279B8"
HighlightBackgroundColor="#8EA4D2" />