gpt4 book ai didi

xamarin - 如何使用Xamarin.Forms等待模态表单解雇?

转载 作者:行者123 更新时间:2023-12-03 13:44:42 25 4
gpt4 key购买 nike

使用Xamarin.Forms,如何使用make等待表单关闭的异步方法?如果我用

await Navigation.PushModalAsync(page);


它会在动画完成后返回,而不是在关闭页面时返回。

我希望创建一个模式化Task SignInAsync方法,如果登录成功,该方法将返回true。

最佳答案

您可以通过在登录页面中触发一个事件并在继续之前侦听该事件来执行此操作,但是您需要TAP的全面支持,我在那儿支持您。这是一个简单而又有效的2页应用程序,可以执行此操作。您显然想要使用ContentPage自定义子类,并具有适当的方法来代替我的快速Command,但是您明白了,并且省去了键入操作。

public static Page GetFormsApp ()
{
NavigationPage navpage = null;
return navpage = new NavigationPage (new ContentPage {
Content = new Button {
Text = "Show Login dialog",
Command = new Command (async o => {
Debug.WriteLine ("Showing sign in dialog");
var result = await SignInAsync (navpage);
Debug.WriteLine (result);
})
}
});
}

static Task<bool> SignInAsync (NavigationPage navpage)
{
Random rnd = new Random ();
var tcs = new TaskCompletionSource<bool> ();
navpage.Navigation.PushModalAsync (new ContentPage {
Content = new Button {
Text = "Try login",
Command = new Command ( o => {
var result = rnd.Next (2) == 1;
navpage.Navigation.PopModalAsync ();
tcs.SetResult (result);
})
}
});
return tcs.Task;
}


较小的缺点是 Task<bool>在弹出模式动画结束之前返回,但这是:


容易修复
如果您正在等待结果推送新的模态 Page,则只有一个问题。否则,继续吧。

关于xamarin - 如何使用Xamarin.Forms等待模态表单解雇?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24174241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com