Как сделать маску для TextBox в WPF?

Рейтинг: 0Ответов: 0Опубликовано: 24.04.2023

Столкнулся с такой проблемой: в windows forms есть элемент называется maskedtextbox. Вся его суть что можно сделать маску и в нее будут заполняться значения. Служит своего рода шаблоном для заполнения. Так вот полазив я не нашел в WPF похожего. Может кто подсказать есть ли аналог или может что-то подключить надо для этого?


Я решил сам сделать маску для wpf, но сразу столкнулся с проблемой. В данном случае мне надо чтобы номера телефона водились по такому шаблону +7 ___ _--__. В коде C#:

 private void MaskedTextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            // Если символ не является числом, то не допускаем его ввод
            if (!char.IsDigit(e.Text[0]))
            {
                e.Handled = true;
                return;
            }

            // Получаем индекс следующего не заполненного символа в маске (шаблон)
            int index = txtNumberPhone.Text.IndexOf('_');

            // Если индекс не найден, отменяем ввод символов
            if (index == -1)
            {
                e.Handled = true;
                return;
            }

            // Заменяем следующий не заполненный символ на введенный символ
            txtNumberPhone.Text = txtNumberPhone.Text.Remove(index, 1).Insert(index, e.Text);

            // Устанавливаем курсор на следующий не заполненный символ в маске (шаблоне)
            txtNumberPhone.CaretIndex = index + 1;

            e.Handled = true;
        }

XAML

:
 Text="+7 ___ ___-__-__" PreviewTextInput="MaskedTextBox_PreviewTextInput"

Но я не знаю как сделать чтобы при нажатие на backspace или delete возвращался _ и можно было ввести снова число. Надеюсь кому то поможет такой способ.

Ответы

Ответов пока нет.