Silverlight NumericUpDown:设置最大字符长度,还是对它进行验证?

时间:2011-07-25 19:25:51

标签: silverlight events validation

我正在尝试使用密钥启动事件来劫持事件并阻止两件事。除了数字键或删除/返回以及一旦达到某个字符长度的最大值,就会禁止输入。

这解决了第一个验证部分,但我似乎无法找到一种方法来防止进入某个字符长度。

    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会阻止UI将字符放入输入中吗?

1 个答案:

答案 0 :(得分:1)

我建议使用验证器。在数据绑定中,您可以指定所需的验证器,框架将负责其余部分。以下是该主题的一个很好的介绍:Tutorial