在 Xamarin 中动态更改条目输入的 Tab 键顺序

Posted

技术标签:

【中文标题】在 Xamarin 中动态更改条目输入的 Tab 键顺序【英文标题】:Changing Tab Order for Entry Input Dynamically in Xamarin 【发布时间】:2021-12-21 16:03:12 【问题描述】:

我有五个条目控件,我希望标签顺序根据特定条件进行更改。例如,有时我希望在点击 enter 时焦点从 entryA 转到 entryB,但有时我希望它从 entryA 转到 entryC。

我尝试将 IsTabStop 设置为视图模型中的绑定布尔值,以便在设置为 false 时跳过该条目,但它不起作用。

我还能做些什么来做到这一点?

<Entry x:Name="entryA" ReturnType="Next" TabIndex="0"/>
<Entry x:Name="entryB" ReturnType="Next" TabIndex="1" IsTabStop="Binding isTabStop"/>
<Entry x:Name="entryC" ReturnType="Next" TabIndex="2"/>
<Entry x:Name="entryD" ReturnType="Next" TabIndex="3"/>
<Entry x:Name="entryE" ReturnType="Next" TabIndex="4"/>

【问题讨论】:

【参考方案1】:

Entry中有一个Completed方法来判断输入操作。然后使用 Focus 设置焦点。

这里有一个小例子供你参考:

这里是xaml代码(我只在第一个Entry中设置了方法):

<StackLayout>
    <Entry x:Name="entryA" ReturnType="Next" TabIndex="0" Completed="entryA_Completed"/>
    <Entry x:Name="entryB" ReturnType="Next" TabIndex="1"/>
    <Entry x:Name="entryC" ReturnType="Next" TabIndex="2"/>
    <Entry x:Name="entryD" ReturnType="Next" TabIndex="3"/>
    <Entry x:Name="entryE" ReturnType="Next" TabIndex="4"/>
</StackLayout>

这是后台代码:

private void entryA_Completed(object sender, EventArgs e)
   
       //You can make some judgments
       entryC.Focus();//Select the third Entry
   

【讨论】:

不幸的是,这不是我的选择,因为它会导致键盘暂时消失然后重新出现。我需要在输入之间无缝转换。 根据我的测试,我的键盘没有消失。 您能提供更多信息吗?

以上是关于在 Xamarin 中动态更改条目输入的 Tab 键顺序的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin动态添加和放置条目。

在 Xamarin.Forms 条目视图中使用仅英文键盘

从 ViewModel Xamarin 中的动态表单中获取条目值

Xamarin.Forms 仅在一个平台 (iOS) 上更改条目的占位符颜色和文本颜色

如何使用 xamarin.forms-shell 在 XAML 中动态绑定类型为 <ShellContent> 的 Tab.Items 列表

当条目字段不可见时,如何隐藏 Xamarin 表单中的错误标签?