PCL应用程序开发 - 在启动屏幕转换后按钮无法点击

时间:2017-12-04 18:27:28

标签: c# xaml xamarin portable-class-library

我正在和一群朋友一起为Twitch项目开发应用程序。我最近在应用启动时集成了一个启动动画。唯一的问题是,这个初始动画渲染主页面上的登录按钮无用。现在,如果我移动按钮代码,按钮会在转换完成之前显示(不需要的结果),但按钮工作。如果我将代码保留在按钮显示 post 转换(所需结果)的位置,则它不可点击(不希望的结果)。我相信你能看到我的沮丧。代码粘贴在下面。请记住,我对编码很新,所以如果这看起来很简单,请怜悯。

LoginPage的XAML:

  <Grid>
    <Image x:Name="image" Aspect="AspectFit"/>
    <Button     HorizontalOptions="Center"
                VerticalOptions="Center"
                BackgroundColor="#008b8b" 
                Image="twitchtwo.png"
                Text="  Login using Twitch!" 
                FontSize="14"
                TextColor="White"
                Clicked="Button_Clicked"/>
    <Grid x:Name="SplashGrid" BackgroundColor="#007272">
      <Image  x:Name="Logo" 
              Source="logo" 
              HorizontalOptions="Center"
              VerticalOptions="Center">
        <Image.TranslationY>
          <OnPlatform x:TypeArguments="x:Double">
            <On Platform="iOS">0</On>
            <On Platform="Android">-12</On>
          </OnPlatform>
        </Image.TranslationY>
      </Image>
    </Grid>
  </Grid>

LoginPage的C#代码:

{
  [XamlCompilation(XamlCompilationOptions.Compile)]
  public partial class LoginPage : ContentPage
  {
    public LoginPage()
    {
      InitializeComponent();
      image.Source = ImageSource.FromResource("CCG.Images.ccgtext.png");
    }
    protected override async void OnAppearing()
    {
      base.OnAppearing();
      await Task.Delay(2000);
      await Task.WhenAll(
        SplashGrid.FadeTo(0, 2000),
        Logo.ScaleTo(0, 250)
        );
    }
    private async void Button_Clicked(object sender, EventArgs e)
    {
      await Navigation.PushModalAsync(new TwitchAuth());
    }
  }
}

2 个答案:

答案 0 :(得分:1)

我能够使用&#39; IsVisible&#39;来修复它。属性设置为false。感谢Roger Leblanc指出我正确的方向。

protected override async void OnAppearing()
    {
      base.OnAppearing();

      await Task.Delay(2000);

      await Task.WhenAll(
        SplashGrid.FadeTo(0, 500),
        Logo.ScaleTo(0, 250)
        );
      SplashGrid.IsVisible = false;
    } 

答案 1 :(得分:0)

您正在淡化SplashGrid元素,淡化会将其不透明度设置为您指定的任何元素(0)。元素仍在您的网页上,但其不透明度为0.只需在淡入淡出完成后将Visibility设置为CollapsedHidden

protected override async void OnAppearing()
{
  base.OnAppearing();
  await Task.Delay(2000);
  await Task.WhenAll(
    SplashGrid.FadeTo(0, 2000),
    Logo.ScaleTo(0, 250)
    );
  SplashGrid.Visibility = Visibility.Hidden;
}