如何将焦点设置为xamarin形式的条目

问题描述 投票:0回答:2

我想将focus()添加到我的输入字段中,当我添加entry.Focus()时,它在页面顶部的输入中可以正常工作。但是,当到达底部时,它不能顺利运行。我也尝试了使用SoftInput方法,但它会将条目隐藏在底部,并且当页面只有一个或两个条目时,设计也会发生变化。

请帮助我

xamarin xamarin.forms xamarin.android xamarin.ios focus
2个回答
1
投票

@ AbbyWang的答案是正确的,也可以使用ReturnCommand属性。

<StackLayout
    Orientation="Vertical">
    <Entry
        x:Name="firstLabel"
        ReturnType="Next"
        FontSize="Small"
        TextColor="Black" />
    <Entry
        x:Name="secondLabel"
        ReturnType="Done"
        FontSize="Small"
        TextColor="Black" />
</StackLayout>

以及后面的代码

public YourPage()
{
    InitializeComponent();

    this.firstLabel.ReturnCommand = new Command(() => this.secondLabel.Focus());

    // or you can use this to call a command on your viewmodel
    this.secondLabel.ReturnCommand = new Command(() => YourViewModel.SomeCommand.Execute(null));
}

0
投票

如果页面上只有两个条目,则只需在顶部条目中添加Completed事件,然后在此事件中为底部条目调用entry.Focus()。所以代码是这样的:

MainPage.xaml:

<StackLayout>
        <StackLayout Orientation="Horizontal" VerticalOptions="Start">
            <!-- Place new controls here -->
            <Entry Text="top" x:Name="TopEntry"
            HorizontalOptions="Center"
            VerticalOptions="CenterAndExpand"
            Completed="Entry_Completed"        />
        </StackLayout>


        <StackLayout Orientation="Horizontal" VerticalOptions="End">
            <!-- Place new controls here -->
            <Entry Text="Bottom"  x:Name="BottomEntry"
            HorizontalOptions="Center"
            VerticalOptions="CenterAndExpand" />
        </StackLayout>
</StackLayout>

MainPage.xaml.cs

void Entry_Completed(object sender, EventArgs e)
{
    BottomEntry.Focus();
}

如果您有两个以上的条目,并且要在按键盘上的“完成”时关注下一个条目,则也可以参考this

© www.soinside.com 2019 - 2024. All rights reserved.