Я пытаюсь использовать событие key up, чтобы перехватить событие и предотвратить две вещи.Все, кроме цифровых клавиш или удаления / возврата, а также после того, как они достигли определенной максимальной длины символа, запрещают ввод.
Это решает первую часть проверки, но я не могу найти способ найтизапретить ввод после определенной длины символа.
private void numericFieldInputField_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.D0 || e.Key == Key.D1 || e.Key == Key.D2 || e.Key == Key.D3 || e.Key == Key.D4 || e.Key == Key.D5 ||
e.Key == Key.D6 || e.Key == Key.D7 || e.Key == Key.D8 || e.Key == Key.D9 || e.Key == Key.NumPad0 || e.Key == Key.NumPad1 ||
e.Key == Key.NumPad2 || e.Key == Key.NumPad3 || e.Key == Key.NumPad4 || e.Key == Key.NumPad5 || e.Key == Key.NumPad6 ||
e.Key == Key.NumPad7 || e.Key == Key.NumPad8 || e.Key == Key.NumPad9 || e.Key == Key.Back || e.Key == Key.Delete ||
e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Up || e.Key == Key.Down || e.Key == Key.Tab)
{
e.Handled = true;
}
else
{
//show validation
}
}
Когда я проверяю длину значения числового обновления, приводим его к строке и просматриваю свойство length в этой точке, последний введенный символ не будетрегистр.Кроме того, когда я устанавливаю e.Handled в true, он все еще вводит символ во ввод.Я думал, что e.Handled = true будет препятствовать тому, чтобы пользовательский интерфейс поместил символ во ввод?