Маска ввода textbox для телефона WPF

319
24 октября 2018, 21:20

У меня есть textbox в который из бд выводится номер телефона:

XAML:

<Label Grid.Row="0"
       Grid.Column="0"
       Content="Номер телефона" />
<TextBox Grid.Row="0"
         Grid.Column="1"
         MaxLength="64"
         Text="{Binding Phone,
                        UpdateSourceTrigger=PropertyChanged,
                        NotifyOnValidationError=True,
                        ValidatesOnDataErrors=True}" />

MODEL:

public string Phone { get; set; }

Мне нужно что бы при вводе в это поле вместо +375291234567 вводилось +375(29)123-45-67 для Белоруссии либо вместо +78001234567 вводилось +7(800)123-45-67 для России. Как реализовать такую маску для одного текстового поля?

Answer 1

Можно использовать ToString с перегрузкой для формата:

(88005553535).ToString("+#-###-###-##-##") => +8-800-555-35-35

Для России. Если нужно для нескольких стран, то можно подготовить Dictionary с вариантами для разных стран:

enum Country
{
    Ru,
    Blr
}
static Dictionary<Country, string> Mask = new Dictionary<Country, string>
{
    [Country.Ru] = "+#-###-###-##-##",
    [Country.Blr] = "+###(##)###-##-##"
};
Console.WriteLine((375291234567).ToString(Mask[Country.Blr])); // => +375(29)123-45-67
Console.WriteLine((88005553535).ToString(Mask[Country.Ru])); // => +8-800-555-35-35

Прошу обратить внимание, что для перегрузки ToString с форматом необходимо, чтобы поле Phone было типа int.

Answer 2

Сделал следующим образом: https://ru.stackoverflow.com/ Правильное форматирование TextBox WPF

READ ALSO
Поменять цвет кнопки для Html хелпера

Поменять цвет кнопки для Html хелпера

На вьюхе есть Html хелпер который генерирует следующую разметку:

164
Почему 1436/1005 = 1?

Почему 1436/1005 = 1?

Вот скрин куска код в режиме отладки:

153
Как сделать автокомлит в Aptana для удаленного соединения?

Как сделать автокомлит в Aptana для удаленного соединения?

Нужно в Aptana Studio настроить autocomplete для функций и классов WordPress

128
Как подключиться к серверу через bash в MacOS?

Как подключиться к серверу через bash в MacOS?

Открыл bashНаписал там команду: ssh [login]@[ip-server]

144