Программно изменяющий текст WPF TextBox с учетом позиции курсора и текущего выбора
Я реализую какой-то элемент управления NumericKeypad для своего приложения WPF, который клиенты могут использовать для удобного ввода текста с сенсорного экрана.
Сам элемент управления работает нормально, мне даже удалось запустить элемент управления (который является окном) на переднем плане, в то время как TextBox, являющийся целью ввода, сохраняет фокус и выделение.
Теперь я хочу добавить пользовательский ввод в свойство Text TextBox так же, как если бы он вводил их с клавиатуры. Это означает, что к определенному поведению следует придерживаться, например...
- Когда курсор находится между текстом, символ должен быть расположен там, где в данный момент находится курсор.
- Когда что-то выбрано, выбор должен быть заменен введенным символом.
Есть ли что-нибудь, что я могу использовать для этого? Единственной функцией, которую я нашел, является TextBoxBase.AppendText, которая не учитывает положение курсора или выделение, а просто добавляет введенную строку в конец текста.
1 ответ
Используйте TextBox.SelectedText, который имеет как установщик, так и получатель.
Если текст не выделен, SelectedText
это диапазон нулевой длины в позиции каретки.