Я пытаюсь использовать TextBoxMask из WindowsCommunityToolkit, но у меня странное поведение.
Код XAML:
<TextBox extensions:TextBoxMask.Mask="99/99/9999"
Text="{Binding PatientItem.StringBirthDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
PatientItemViewModel код:
private string _StringBirthDate;
public string StringBirthDate
{
get { return _StringBirthDate; }
set
{
DateTime birthDateValue;
if (!String.IsNullOrEmpty(value) && DateTime.TryParse(value, out birthDateValue))
{
this.CalculateAgeValue(birthDateValue);
this.BirthDate = birthDateValue;
SetProperty(ref _StringBirthDate, value);
}
}
}
Когда я начинаю с пустого ввода, у меня нет проблем.
Проблемы появляются, когда я открываю страницу для редактирования данных: PatientItem.StringBirthDate устанавливается со значением «18/02/1952».
Когда я показываю свою страницу, все выглядит хорошо:
Но если нажать на крестик, чтобы очистить текстовое поле, или если я использую прикосновение к клавише Backspace, исчезнет только последняя буква, и после этого момента, если я коснусь чего-нибудь на клавиатуре, появятся странные символы (число не заменено, курсор не перемещается) вперед и т.д ...)
Есть ли у вас идеи улучшить мой код?
Известна ли проблема с привязкой текста, используемой с маской?
РЕДАКТИРОВАТЬ: видео, чтобы показать более подробно мою проблему:
Кажется, что TextBoxMask вызывает метод set со странными значениями: