Программно изменяющий текст WPF TextBox с учетом позиции курсора и текущего выбора

Я реализую какой-то элемент управления NumericKeypad для своего приложения WPF, который клиенты могут использовать для удобного ввода текста с сенсорного экрана.

Сам элемент управления работает нормально, мне даже удалось запустить элемент управления (который является окном) на переднем плане, в то время как TextBox, являющийся целью ввода, сохраняет фокус и выделение.

Теперь я хочу добавить пользовательский ввод в свойство Text TextBox так же, как если бы он вводил их с клавиатуры. Это означает, что к определенному поведению следует придерживаться, например...

  • Когда курсор находится между текстом, символ должен быть расположен там, где в данный момент находится курсор.
  • Когда что-то выбрано, выбор должен быть заменен введенным символом.

Есть ли что-нибудь, что я могу использовать для этого? Единственной функцией, которую я нашел, является TextBoxBase.AppendText, которая не учитывает положение курсора или выделение, а просто добавляет введенную строку в конец текста.

1 ответ

Решение

Используйте TextBox.SelectedText, который имеет как установщик, так и получатель.

Если текст не выделен, SelectedText это диапазон нулевой длины в позиции каретки.

Другие вопросы по тегам