Я столкнулся со странным взаимодействием с Syncfusion Masked Edit. Это сторонний WPF-элемент управления, который в основном представляет собой текстовое поле, которое принимает строковую маску и позволяет вам выбрать способ ее интерпретации (тот, который я сейчас установил).в RegEx), чтобы отфильтровать ваш текст.
После создания нового NewCustomer
с помощью моей команды сброса, если я попытаюсь ввести Маскированное редактирование, которое имело значение, до создания нового экземпляра он каким-то образом все еще запоминаетэто старое значение и добавляет его к новому значению.Вот клип (https://gfycat.com/embellishedpalefantail)
Что я пробовал:
Я попытался удалить свойства Mask
и MaskType
и запустилпрограмма, чтобы увидеть, было ли что-то еще причиной, но, поскольку она работала нормально, проблема, кажется, лежит на самой маске,
- Может быть, они интерпретируют мою маску по-разному, и она ведет себя так, как они хотелиэто к?
- Или моя Маска просто неверна и интерпретирует это нормально? Потому что с моей маской
[0-9a-zA-Z ]{0,20}
я ожидал, что она будет разрешать только буквенно-цифровые символы и пробел с минимальной длиной 0 и максимумдлина 20.
Вот код всего, что связано с моей проблемой:
C #
Свойство, к которому привязано текстовое значение:
private Customer newCustomer;
public Customer NewCustomer
{
get { return newCustomer; }
set { newCustomer = value; RaisePropertyChanged("NewCustomer"); }
}
public class Customer : BaseSearchableCollectionClass
{
private string firstName;
public string FirstName
{
get { return firstName; }
set { firstName = value; RaisePropertyChanged("FirstName"); }
}
}
// The BaseSearchableCollectionClass contains the INotify implementation and other unrelated code
Команда сброса:
public RelayCommand ResetNewCustomerCommand { get; private set; }
public void ResetNewCustomer(object msg)
{
NewCustomer = new Customer();
}
public bool ResetNewCustomerCanUse(object msg)
{
if (HasChange() == true)
return true;
return false;
}
XAML
SFMaskedEdit:
<chart:SfMaskedEdit
Text="{Binding NewCustomer.FirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Mask="[0-9a-zA-Z ]{0,20}"
MaskType="RegEx"
/>
Кнопка сброса:
<Button
Command="{Binding ResetNewCustomerCommand}"
Content="Reset"
/>
То, что я ожидал:
Я ожидал, что он будет работать именно так:
- Я что-то набираю в Маскированном редактировании
- Маскированное редактирование отфильтровывает любые нежелательные символы и поддерживает требования к длине
- Я нажимаю кнопку сброса, чтобы создать нового клиента, эффективно удаляя любые существующие значения
- Я набираю новое значение в МаскированномОтредактируйте, как если бы это было новое текстовое поле (к сожалению, проблема заключается в том, что он добавляет очищенное значение к новому значению)