在Xamarin.Forms中将焦点设置到条目

22

这只是一个简化的例子,但我正在尝试设置这样一个功能,当我在我的应用程序中打开此页面时,键盘会自动弹出,准备让用户键入其对输入字段的响应。

    var namelabel = new Label { Text = "What is your name?" };
    var nameentry = new Entry { Placeholder = "Type here..." };
    var colorlabel = new Label { Text = "What's your fav color?" };
    var colorentry = new Entry { Placeholder = "Type here..." };
    Content = new StackLayout {
       Spacing = 15,
       Children = { namelabel, nameentry, colorlabel, colorentry }
    };

如何将页面的焦点设置为第一个输入框?另外,当用户输入完第一个条目后,我该如何设置,让用户可以按下键盘上的“下一个”按钮(或类似的按钮),使应用程序带他们进入填写第二个条目的状态?

11个回答

0

有人能解释一下为什么这个不起作用吗?

    protected override void OnAppearing()
    {
       base.OnAppearing();
       CustomerNameEntry.Focus();       
    }

但是这确实可以(添加async和Task.Delay(1))

    protected override async void OnAppearing()
    {
         base.OnAppearing();
         await Task.Delay(1);
         CustomerNameEntry.Focus();       
    }

我宁愿不添加这些混乱的代码,虽然看起来有点糊弄人,但这是我能让它正常工作的唯一方法(我也尝试过在主线程上调用,但没有成功)。


1
假设使用导航进行的任何动画,在您尝试执行焦点(OnAppearing)之前,新页面尚未出现。延迟可能会等待UI赶上,然后在这种情况下,动画将已完成,因此它可以正常工作。 - Kris Adams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接