这只是一个简化的示例,但我正在尝试将其设置为当我在应用程序中打开此页面时,首先发生的是键盘弹出,以便用户输入对条目的响应领域.
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 }
};
Run Code Online (Sandbox Code Playgroud)
如何将页面焦点设置为第一个条目?此外,在用户输入第一个条目后,我怎么能设置它,以便用户可以按下键盘上的"下一个"按钮(或沿着这些线条的东西),应用程序将带他们填写第二次入场?
Jas*_*son 23
使用该Focus
方法
nameentry.Focus();
Run Code Online (Sandbox Code Playgroud)
如果您希望在页面出现时设置焦点,则应该在OnAppearing
方法中执行此操作
protected override void OnAppearing ()
{
base.OnAppearing ();
nameentry.Focus();
}
Run Code Online (Sandbox Code Playgroud)
Cha*_*Y S 11
在 OnAppearing() 中添加以下代码,
protected async override void OnAppearing()
{
await Task.Run(async () =>
{
await Task.Delay(100);
Device.BeginInvokeOnMainThread(async () =>
{
txtName.Focus();
});
});
}
Run Code Online (Sandbox Code Playgroud)
注意:txtName是您的输入字段的参考名称。
ADM*_*-IT 10
在我的一个项目中,我做了这样的事情。请尝试以下示例:
public class EntryFocusBehavior : Behavior<Entry>
{
public string NextFocusElementName { get; set; }
protected override void OnAttachedTo(Entry bindable)
{
base.OnAttachedTo(bindable);
bindable.Completed += Bindable_Completed;
}
protected override void OnDetachingFrom(Entry bindable)
{
bindable.Completed -= Bindable_Completed;
base.OnDetachingFrom(bindable);
}
private void Bindable_Completed(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(NextFocusElementName))
return;
var parent = ((Entry)sender).Parent;
while (parent != null)
{
var nextFocusElement = parent.FindByName<Entry>(NextFocusElementName);
if (nextFocusElement != null)
{
nextFocusElement.Focus();
break;
}
else
{
parent = parent.Parent;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
!!!如果我在代码中犯了错误,请告诉我。