Silverlight NumericUpDown: установить максимальную длину символа или проверить ее? - PullRequest
0 голосов
/ 25 июля 2011

Я пытаюсь использовать событие 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 будет препятствовать тому, чтобы пользовательский интерфейс поместил символ во ввод?

1 Ответ

1 голос
/ 25 июля 2011

Я бы предложил использовать валидатор.В привязке данных вы указываете нужный валидатор, а остальная часть заботится о фреймворке.Вот хорошее введение в тему: Учебное пособие

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...