【问题标题】:Xamarin forms how to keep label text after label animationXamarin表单如何在标签动画后保留标签文本
【发布时间】:2016-10-06 15:20:16
【问题描述】:

我想弄清楚,如何在标签动画完成后保持我的标签文本出现。我的想法是我在顶部有标签,在它后面有输入字段。在条目中没有任何文本之前,我的标签是空的,但是当我开始键入时,我的标签会在每个新键入的字符之后一遍又一遍地出现动画。我已经这样做了,但我不希望它会出现一次动画,然后继续显示我的常规标签而不重复动画。因为现在我的标签显示有动画并且没有保留,所以它立即消失了。

这是我的 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="Project.MyPage">
  <ContentPage.Content>
    <StackLayout Padding="7,7,7,7" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Spacing="0">
              <StackLayout BackgroundColor="White">
              <Label x:Name="NameText"  />
              <Entry x:Name="Name"  />
              </StackLayout>                    
    </StackLayout>  
  </ContentPage.Content>
</ContentPage>

这是我的带有 EventHandler 的 C# 代码:TextChange

public MyPage()
{
   InitializeComponent();
   Name.TextChanged += Name_TextChanged;
}
private async void Name_TextChanged(object sender, TextChangedEventArgs e)
{
   NameText.Animate("nameAnimation", new Animation(v => NameText.Scale = v, 1, 2, Easing.SpringIn));
   NameText.Text = "MyLabel";
}

我的标签如何只出现一次并完成动画动作? 感谢您的回答或建议。

【问题讨论】:

    标签: c# xaml xamarin label xamarin.forms


    【解决方案1】:

    在动画之后分离你的处理程序:

    async void Name_TextChanged(object sender, TextChangedEventArgs e)
    {
      NameText.Animate("nameAnimation", new Animation(v => NameText.Scale = v, 1, 2, Easing.SpringIn));
      NameText.Text = "MyLabel";
      Name.TextChanged -= Name_TextChanged;
    }
    

    【讨论】:

    • 现在动画显示一次,标签不保留显示文本。当我添加 -= Name_TextChanged; 时,我看到动画后的空白标签和我的视觉工作室重新启动
    猜你喜欢
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多