WPF и C # ComboBox Следующий фокус - PullRequest
0 голосов
/ 24 февраля 2012

Я использую WPF и C #.У меня есть приложение с OnScreenKeyboard, сделанное с помощью кнопок.Когда я нажимаю кнопку вкладки на OnScreenKeyboard, она делает это:

if (IsEnterEnabled){
  CurrentTextBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}

CurrentTextBox - это элемент управления.

Когда текстовое поле фокусируется, оно работает нормально и переходит к следующему фокусу, даже еслиследующим фокусом является комбинированный список, но если текущий фокус находится в редактируемом комбинированном окне, он не перемещается к следующему элементу фокусировки.

Если комбинированное окно недоступно для редактирования, оно работает.

Ответы [ 2 ]

0 голосов
/ 02 июня 2015

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

<ComboBox my:EnterKeyTraversal.IsEnabled="True">
...
</ComboBox>
0 голосов
/ 27 февраля 2012

Так как ComboBox имеет внутри TextBox, который в настоящее время имеет фокус, указание ComboBox двигаться дальше будет только перемещаться в TextBox.Вместо этого возьмите внутренний TextBox и перейдите к следующему:

        var s1 = FocusManager.GetFocusedElement(this);
        if (s1 is FrameworkElement)
        {
            ((FrameworkElement)s1).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
        }
...