单击按钮时隐藏/取消隐藏 XAML 元素

时间:2021-05-04 21:02:17

标签: c# xaml xamarin.forms show-hide activity-indicator

当我发出 ActivityIndicator 请求时,我一直在尝试实现此 WebService。我尝试了几种不同的解决方案,我正在尝试最简单的一种,如下所示:

https://www.youtube.com/watch?v=FmX4RD2iyWw

嗯,这对我不起作用。在我看来,它不接受我想给变量的新值。当我通过代码将 IsVisible 变量设置为 true 时,我可以看到那里的旋转圆,但是,当我将变量设置为 false 并单击按钮时什么也没有发生。此外,应该有一个“空”空间对应于不存在的元素。

任何帮助将不胜感激。

非常感谢!

登录页面.xaml :

<ContentPage.Content>
  <StackLayout>
    <ActivityIndicator x:Name="activityIndicator" IsVisible="false" IsRunning="True" WidthRequest="30" HeightRequest="30"/>
  </StackLayout>
</ContentPage.Content>

<Button Text="Sign In" Clicked="SignIn" />

登录页面.xaml.cs:

void SignIn(object sender, EventArgs e)
  {
    activityIndicator.IsVisible = true;
    Method();
    activityIndicator.IsVisible = false;
  }

1 个答案:

答案 0 :(得分:1)

在评论的帮助下,我进行了一些小改动使其正常工作。我相信 await 命令是我遗漏的细节之一。 我不确定这是否是最好的解决方案。我很确定我应该为此使用某种标志,但我仍然不能这样做。

以下是两种解决方案:

1.通过将 IsVisible 属性设置为 FALSE,您可以隐藏 ActivityIndicator 而没有为元素保留空间

登录页面.xaml :

<ContentPage.Content>
  <StackLayout>
    <ActivityIndicator x:Name="activityIndicator" IsVisible="false" IsRunning="True" WidthRequest="30" HeightRequest="30"/>
    <Button Text="Sign In" Clicked="SignIn" />
  </StackLayout>
</ContentPage.Content>

登录页面.xaml.cs:

async void SignIn(object sender, EventArgs e)
  {
    activityIndicator.IsVisible = true;
    await Task.Delay(500);
    Method();
    activityIndicator.IsVisible = false;
  }

2.通过将 IsRunning 属性设置为 FALSE,您可以隐藏 ActivityIndicator 并为元素保留一个保留空间

登录页面.xaml :

<ContentPage.Content>
  <StackLayout>
    <ActivityIndicator x:Name="activityIndicator" IsVisible="True" IsRunning="False" WidthRequest="30" HeightRequest="30"/>
    <Button Text="Sign In" Clicked="SignIn" />
  </StackLayout>
</ContentPage.Content>

登录页面.xaml.cs:

async void SignIn(object sender, EventArgs e)
  {
    activityIndicator.IsRunning = true;
    await Task.Delay(500);
    Method();
    activityIndicator.IsRunning = false;
  }
相关问题