wpf - элементов - xaml меню




Интерпретировать ввод как вкладку WPF (3)

woodyiii, в UIElement есть функция PredictFocus() которая по имени знает свою функцию, тогда вы можете проверить, включен этот элемент или нет, чтобы переместить фокус на него или нет ...

Я хочу интерпретировать клавишу Enter как клавишу Tab во всем моем приложении WPF, то есть везде в моем приложении, когда пользователь нажимает Enter, я хочу сфокусировать следующий фокусируемый элемент управления, кроме тех случаев, когда кнопка находится в фокусе. Есть ли способ сделать это в жизненном цикле приложения? Кто-нибудь может дать мне пример?
Большое спасибо!


Вы можете использовать мой прикрепленный код свойства EnterKeyTraversal, если хотите. Добавьте его в контейнер верхнего уровня в окне WPF, и все, что внутри, будет обрабатывать ввод как вкладку:

<StackPanel my:EnterKeyTraversal.IsEnabled="True">
    ...
</StackPanel>

Я обошел проблему woodyiii, добавив FrameworkElement.Tag (значение которого IgnoreEnterKeyTraversal) к определенным элементам (кнопкам, комбинированным спискам или всем, что я хочу игнорировать при обходе клавиши ввода) в моем XAML. Затем я искал этот тег и значение в прикрепленном свойстве. Вот так:

    if (e.Key == Key.Enter)
    {
        if (ue.Tag != null && ue.Tag.ToString() == "IgnoreEnterKeyTraversal")
        {
            //ignore
        }
        else
        {
            e.Handled = true;
            ue.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
        }
    }




keyboard-input