c# - 在 Xamarin 中动态更改条目输入的 Tab 键顺序
问题描述
我有五个条目控件,我希望标签顺序根据某些条件进行更改。例如,有时我希望在点击 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"/>
解决方案
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
}
推荐阅读
- c++ - C++:继承和列表函数作为类成员的问题
- r - 从 R 调用 Python 代码
- hyperledger-fabric - 我们可以在 golang 链码中创建多个线程吗?
- spring - 即使 h2 在 MySQL 模式下运行,Liquibase 也会将 h2 检测为数据库 [Spring boot]
- tfs - VSTS 扩展:根据流程模板填充工作项类型
- github - Apache Cordova 与 VS 2013
- java - hibernate.jdbc.time_zone = UTC 忽略
- java - NoSuchMethodException:找不到合适的构造函数
- azure - 在使用 JAVA 的 azure 函数中,如何获取请求正文
- php - Yii2 Kartik Select2 Ajax 控制器 - 结果未显示