Перейти к следующему текстовому поле при нажатии клавиши "Enter" вместо отправки (Windows Phone)

У меня есть простая форма, и я хотел бы, чтобы, когда пользователь нажимает enter на клавиатуре телефона, курсор переместится в следующее текстовое поле. Можно ли это сделать в универсальных приложениях Windows? В android клавиатура показывает клавишу Next / Done для навигации по элементам формы.

enter image description here

2 ответов


вы можете использовать FocusManager для программного перемещения фокуса.

используйте событие KeyDown контейнера TextBox, скажем, StackPanel, чтобы прослушать событие клавиатуры. Таким образом, ваш код будет работать следующим образом

    private void stackPanel_KeyDown(object sender, KeyRoutedEventArgs e)
    {
        if (e.Key == Windows.System.VirtualKey.Enter)
        {
            if (FocusManager.GetFocusedElement() == inputTextBox) // Change the inputTextBox to your TextBox name
            {
                FocusManager.TryMoveFocus(FocusNavigationDirection.Next);
                FocusManager.TryMoveFocus(FocusNavigationDirection.Next);
            }
            else
            { 
                FocusManager.TryMoveFocus(FocusNavigationDirection.Next);
            }

            // Make sure to set the Handled to true, otherwise the RoutedEvent might fire twice
            e.Handled = true;
        }
    }

дополнительные сведения о FocusManager см. В разделе https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.input.focusmanager.trymovefocus

дополнительные сведения о KeyDown см. В разделе https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.uielement.keydown


у вас есть что-то вроде yourTextBoxName.Focus() ..? также используйте KeyDownEvent для New Password textbox и проверьте следующее

if (e.Key == Key.Enter || e.PlatformKeyCode == 0x0A)
{
     confirmPassword.Focus();//change confirmPassword to your controls actual name    
}