如何改变一下它的图片

问题描述 投票:0回答:2

我有相同的类型一个蓝色,粉红色等,以模拟在图像上点击的两幅图像,所以当我在图像上单击它调用一个屏幕,而不先调用其他图像。我要的是调用其它屏幕,点击即蓝色变为粉红色,然后才调用屏幕上的初始图像之前。

 <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);
c# xamarin.forms
2个回答
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


0
投票

您可以使用FlexButton在影像上模拟点击

<flex:FlexButton
    WidthRequest="76"
    HeightRequest="76"
    CornerRadius="38"
    HorizontalOptions="Center"
    Icon="lightbulb.png"
    ForegroundColor="#ffffff"
    HighlightForegroundColor="#49516F"
    BackgroundColor="#6279B8"
    HighlightBackgroundColor="#8EA4D2" />
© www.soinside.com 2019 - 2024. All rights reserved.