0

我正在尝试创建这样的东西所以我写了这段代码:

这是 XAML:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="alphatrial.MainPage"
             BackgroundColor="#ffc40c"
             xmlns:local="clr-namespace:alphatrial.Effects">
    <ContentPage.Effects>
        <local:StatusBarEffect 
        BackgroundColor="#ffc40c"/>
    </ContentPage.Effects>
    <StackLayout >
        <Label  Text="ISC - Alpha" TextColor="Black" FontSize="Large" FontAttributes="Bold" FontFamily="MyAwesomeCustomFont" HorizontalOptions="End" Margin="0,50,50,-14" />
        <Line Stroke="black" X1="0"  X2="340" StrokeThickness="3"  />

        <Label Text="App" TextColor="White" FontSize="Large" FontAttributes="Bold" FontFamily="MyAwesomeCustomFont" HorizontalOptions="End" Margin="0,-12,15,0"/>

        <Frame Margin="0,80,0,0" BackgroundColor="Transparent">
            <StackLayout  >
                <Label Text="Email" TextColor="Black" FontSize="Small" Margin="25,0,20,0" x:Name="emailAnimate"  BindingContext="email" />
                <Entry Margin="20,-40,20,0" x:Name="email"/>
                
            </StackLayout>

        </Frame>

        <Frame Margin="0,-10,0,0" BackgroundColor="Transparent">
            <StackLayout  >
                <Label Text="Password" TextColor="Black" FontSize="Small" Margin="25,0,20,0" x:Name="PassAnimate" />
                <Entry Margin="20,-40,20,0" x:Name="password" IsPassword="True"/>

            </StackLayout>

        </Frame>
    </StackLayout>

</ContentPage>

这是 xaml.cs 文件:

 public MainPage()
        {
          
            InitializeComponent();
            email.Focused += Email_Focused;
            email.Unfocused += Email_Unfocused;
            password.Focused += Password_Focused;
            password.Unfocused += Password_Unfocused;
           
        }
 private void Password_Unfocused(object sender, FocusEventArgs e)
        {
            if (password.Text == "")
            {
                PassAnimate.TranslateTo(0, 0, 100);
                PassAnimate.ScaleTo(1, 100);
            }
        }

        private void Password_Focused(object sender, FocusEventArgs e)
        {
            if (password.IsFocused)
            {
                PassAnimate.ScaleTo(0.8, 150);
                PassAnimate.TranslateTo(-25, -30, 150);

            }

        }


        private void Email_Unfocused(object sender, FocusEventArgs e)
        {
            if(email.Text=="")
            {
                emailAnimate.TranslateTo(0, 0, 100);
                emailAnimate.ScaleTo(1, 100);
            }
           
            
        }

        private void Email_Focused(object sender, FocusEventArgs e)
        {
            if (email.IsFocused)
            {
                emailAnimate.ScaleTo(0.8,150);
                emailAnimate.TranslateTo(-25, -30,150);
               

            }



        }
    }
}

但我得到了这个

当我从条目中移除焦点时,该unfocus功能不起作用。但是,当我在条目中写一些东西,然后清除它并移除焦点时,动画效果很好。问题是什么?

更新:

当我删除检查条目是否为空的代码时:

if(email.Text=="")

动画奏效了。似乎这不是检查条目是否为空的正确方法。你能给我一个关于如何知道条目是空的想法吗?

4

1 回答 1

0

好的,我想通了,我必须使用以下命令检查条目是否为空:

if (string.IsNullOrEmpty(email.Text) )
于 2021-09-23T14:30:17.440 回答