Можно ли перепрограммировать функциональность клавиши табуляции при использовании TextBox в приложениях UWP? - PullRequest
0 голосов
/ 06 июля 2018

Можно ли перепрограммировать функциональность клавиши табуляции при использовании TextBox в приложениях UWP? Если вы используете UNP-версию OneNote, вы видите, что это возможно ... Ну, я не могу сказать наверняка, поскольку приложение разработали сами Microsoft, так что, возможно, они просто дали себе возможность переопределить его?

Но моя цель - просто запрограммировать ключ, когда мой TextBox или RichEditBox имеют фокус. Я хотел бы дать пользователям возможность просто нажимать клавишу табуляции и добавлять отступы для текста или маркеров вместо того, чтобы дополнительно удерживать клавишу управления. Но в настоящее время, по умолчанию, когда вы нажимаете клавишу табуляции, редактор теряет фокус, а следующий элемент пользовательского интерфейса получает фокус. Раздражает. -_- Но спасибо.

1 Ответ

0 голосов
/ 06 июля 2018

На MSDN есть пример с некоторым обходным решением. Однако свойства CaretIndex больше нет, поэтому вам нужно использовать SelectionStart:

private void UIElement_OnPreviewKeyDown(object sender, KeyRoutedEventArgs e)
{
     if (e.OriginalKey == VirtualKey.Tab)
     {
        var txtBox = (TextBox)sender;

         //No CaretIndex property anymore, you need to use SelectionStart
         var caretPos = txtBox.SelectionStart;

         txtBox.Text = txtBox.Text.Insert(caretPos, "    ");
         txtBox.SelectionStart = caretPos + 4;

         //Remember to set Handled to avoid OS handle Tab key
         e.Handled = true;
      }
}

Это представлено в качестве обходного пути, поэтому я рекомендую вам попробовать найти "открытое текстовое поле с расширением uwp" и получить оттуда идею.

В любом случае, решение выше довольно быстро и легко реализуемо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...