как убрать в смещение текстового курсора в TextBox при замене точки на запятую. (C#, WPF)

В WPF добавил обработчик TextChanged для замены точки на запятую при вводе значения, но столкнулся с другой проблемой, когда ставлю точку, то она меняется на запятую и текстовый курсор уходит в самое начало строки и нужно его перемещать обратно в конец числа и продолжать вводить значение, мне кажется это не очень правильно и удобно, подскажите как исправить смещение текстового курсора?

private void A_text_TextChanged(object sender, TextChangedEventArgs e)
 {
     string str = A_text.Text;
     if (str.Contains("."))
     {
         string s = str.Replace(".", ",");
         A_text.Clear();
         A_text.AppendText(str.Replace(".", ","));
     }
 }

Ответы (1 шт):

Автор решения: xellan

Вы должны сохранить SelectionStart свойство в переменной, а затем при срабатывание условий и правок текста установить для SelectionStart значение, указанное в переменной. Тем самым вы вернете курсор в любую позицию где он до этого был.

private void A_text_TextChanged(object sender, TextChangedEventArgs e)
    {
        var cursorPosition = A_text.SelectionStart; // сохраняем текущую позицию курсора
        if (A_text.Text.Contains("."))
        {
            A_text.Text = A_text.Text.Replace(".", ",");
            A_text.SelectionStart = cursorPosition; // устанавливаем курсор в нужную позицию
        }
    }
→ Ссылка