WPF - 使用Int32.Parse后出错

时间:2013-02-08 18:32:13

标签: wpf xaml

Int32.Parse课程中使用ComboBoxNotEmptyValidationRule后,我收到错误消息:

Input string was not in a correct format.

当我添加到XAML时:

<local:ComboBoxNotEmptyValidationRule x:Name="Number" ValidatesOnTargetUpdated="True"/>

程序正常运行,这个walidation正常运行。在设计窗口中,我没有任何内容,只有FormatException: Input string was not in a correct format.消息。当我在XAML中评论这一行时,一切都很好。

class ComboBoxNotEmptyValidationRule : ValidationRule
    {
        public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
        {
            int str = -1;
              str = Int32.Parse(value as string);
            if (str > 0)
            {
                if (str > 0)
                    return ValidationResult.ValidResult;
            }
            return new ValidationResult(false, "please fill required field");
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以使用int32.TryParse

class ComboBoxNotEmptyValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        int str;
        if (Int32.TryParse(value as string, out str))
        {
            if (str > 0)
                return ValidationResult.ValidResult;
        }
        return new ValidationResult(false, "please fill required field");
    }
}

或者,您可以捕获FormatException并返回错误的验证结果。

class ComboBoxNotEmptyValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        int str = -1;
        try
        {
            str = Int32.Parse(value as string);
            if (str > 0)
            {
                if (str > 0)
                    return ValidationResult.ValidResult;
            }
            return new ValidationResult(false, "please fill required field");
        }
        catch (FormatException)
        {
            return new ValidationResult(false, "please fill required field");
        }
    }
}