如何通过单击更改图片

时间:2018-11-30 15:24:17

标签: c# xamarin.forms

我有两个相同类型的图像,一个是蓝色,另一个是粉红色,以模拟对该图像的单击,因此,当我单击该图像时,它会调用一个屏幕而不会先调用另一个图像。 我想要的是在调用另一个屏幕之前,单击蓝色的初始图像变为粉红色,然后才调用该屏幕。

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

2 个答案:

答案 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);

引用:Async and Await

答案 1 :(得分:0)

您可以使用FlexButton模拟图片点击

<flex:FlexButton
    WidthRequest="76"
    HeightRequest="76"
    CornerRadius="38"
    HorizontalOptions="Center"
    Icon="lightbulb.png"
    ForegroundColor="#ffffff"
    HighlightForegroundColor="#49516F"
    BackgroundColor="#6279B8"
    HighlightBackgroundColor="#8EA4D2" />
相关问题