0

クラスで使用Int32.Parseした後、エラーが発生します:ComboBoxNotEmptyValidationRule

Input string was not in a correct format.

XAMLに追加する場合:

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

プログラムは正常に実行されており、このワリデーションは正しく機能します。デザインウィンドウにはコンテンツはなく、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");
        }
    }
4

1 に答える 1

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");
        }
    }
}
于 2013-02-08T19:02:39.393 に答える