【发布时间】:2019-12-29 08:40:50
【问题描述】:
我有问题。我创建了一个带有字符串的 ContentPage:public MainPage(string Status)。
现在,当我使用值“已发送邮件”调用此页面时,我想从顶部滑入标签 2 秒钟,然后再次向上滑动。现在标签位于RelativeLayout 中,如下所示:
<Label x:Name="txtMailSent" HorizontalTextAlignment="Center" TextColor="White" BackgroundColor="Green" Text="A verification mail has been sent."
RelativeLayout.XConstraint="{ConstraintExpression
Type=RelativeToParent,Property=Width,Factor=0,Constant=0}"
RelativeLayout.YConstraint="{ConstraintExpression
Type=RelativeToParent,Property=Height,Factor=0,Constant=0}"
RelativeLayout.WidthConstraint="{ConstraintExpression
Type=RelativeToParent,Property=Width,Factor=1,Constant=0}"
RelativeLayout.HeightConstraint="{ConstraintExpression
Type=RelativeToParent,Property=Height,Factor=0.025,Constant=0}"/>
所以我创建了这段代码:
public MainPage(string Status)
{
InitializeComponent();
SizeChanged += (s, a) =>
{
txtMailSent.TranslateTo(0, -txtMailSent.Height, 1, Easing.Linear);
};
if (Status == "Mail sent")
{
new Action(async () => await ShowMail())();
}
}
private async Task ShowMail()
{
await txtMailSent.TranslateTo(0, 0, 400, Easing.Linear);
}
但是当我启动应用程序并提供该参数时,没有显示任何标签。我做错了什么?
【问题讨论】:
-
如下所示,您可能应该考虑在 OnAppearing 中触发动画,但我认为您上面的代码的主要问题是您创建了一个指向 ShowMail 的操作,但您没有调用它。仅仅创建动作是不够的。您可以直接调用 ShowMail 函数,所以我不确定您为什么不这样做,但您可能仍然会遇到在页面实际可见之前它开始执行的问题。
标签: c# xamarin xamarin.forms xamarin.android xamarin.ios