在 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 键顺序的主要内容,如果未能解决你的问题,请参考以下文章
从 ViewModel Xamarin 中的动态表单中获取条目值
Xamarin.Forms 仅在一个平台 (iOS) 上更改条目的占位符颜色和文本颜色
如何使用 xamarin.forms-shell 在 XAML 中动态绑定类型为 <ShellContent> 的 Tab.Items 列表