Dodaj zdarzenie wprowadzania tekstu podglądu. Podobnie jak: <TextBox PreviewTextInput="PreviewTextInput" />
.
Następnie wewnątrz tego ustawienia e.Handled, jeśli tekst nie jest dozwolony.
e.Handled = !IsTextAllowed(e.Text);
Używam prostego wyrażenia w IsTextAllowed, aby sprawdzić, czy powinienem zezwolić na wpisanie. W moim przypadku chcę tylko pozwolić na liczby, kropki i myślniki.
private static bool IsTextAllowed(string text)
{
Regex regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text
return !regex.IsMatch(text);
}
Jeśli chcesz uniemożliwić wklejanie nieprawidłowych danych zahaczyć zdarzenie DataObject.Pasting DataObject.Pasting="TextBoxPasting"
jak pokazano tutaj (kod zaczerpnięty):
// Use the DataObject.Pasting Handler
private void TextBoxPasting(object sender, DataObjectPastingEventArgs e)
{
if (e.DataObject.GetDataPresent(typeof(String)))
{
String text = (String)e.DataObject.GetData(typeof(String));
if (!IsTextAllowed(text))
{
e.CancelCommand();
}
}
else
{
e.CancelCommand();
}
}
Więc masz na myśli dodatnią lub ujemną liczbę całkowitą, taką jak 1234 lub -1234, lub masz na myśli coś, co ma znak "-" w tym, jak 800-555-5555? –