【发布时间】:2022-01-11 12:12:27
【问题描述】:
我有一堆条目和选择器,我希望焦点自动切换到下一个条目/选择器。 我通过调用我想要关注的 Entry/Picker 上的 Focus() 方法来做到这一点。如果我当前的焦点在一个条目上,而我的下一个元素是一个条目或一个选择器,它会改变焦点并按预期打开键盘/选择器对话框。如果我当前的焦点在一个 Picker 上,而下一个元素是一个 Entry,那么该 Entry 会按预期获得焦点,但键盘不会打开。 在 Pickers SelectedIndexChanged 事件中调用 focus() 方法。 我该如何解决?
xml代码:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="ABM.Ablesegeraet.Views.TourenLadenPage"
Title="Touren laden">
<ContentPage.Content>
<StackLayout>
<Label Grid.Row="0" Grid.Column="0" Margin="30,10,0,0" FontSize="Medium" Text="Mandant:"/>
<Picker x:Name="MandantenPicker" ItemDisplayBinding="{Binding Ort}" Title="Mandant" Grid.Row="0" Grid.Column="1" SelectedIndexChanged="MandantPicker_SelectedIndexChanged"/>
<Entry Grid.Row="1" x:Name="test"/>
</StackLayout>
</ContentPage.Content>
SelectedIndexcChanged:
private void MandantPicker_SelectedIndexChanged(object sender, EventArgs e)
{
test.Focus();
}
【问题讨论】:
-
请发布足够多的代码以查看到底发生了什么。显示定义具有焦点的
picker的 xaml(或 cs),以及接下来转到的entry。显示包含focus调用的SelectedIndexChanged方法。另外,您是在设备上还是在模拟器上进行测试?如果是模拟器,我建议附加一个物理设备 - 以确保它不仅仅是模拟器的奇怪之处。 (因为模拟器在连接了物理键盘的电脑上运行,所以软键盘可能没有在应该打开的时候打开) -
@ToolmakerSteve 我添加了代码。我也不使用模拟器。我使用物理设备。
标签: xamarin xamarin.forms xamarin.android