Изменение сообщения (или исключения) в привязке WPF ValidatesOnException - PullRequest
3 голосов
/ 14 июля 2009

У меня есть приложение WPF, использующее MVVM. Я использую привязку к объекту POCO.

Текстовое поле привязано к свойству объекта, например:

           <TextBox.Text>
                <Binding Path="CertainProperty" Mode="TwoWay" >
                    <Binding.ValidationRules>
                        <ExceptionValidationRule/>
                    </Binding.ValidationRules>
                </Binding>
            </TextBox.Text>

Теперь это свойство является свойством int, и когда пользователь пытался ввести нечисловое значение, он получает «входная строка была в неправильном формате». Мне нужно настроить это сообщение на более удобное для пользователя.

Как я могу это сделать?

1 Ответ

0 голосов
/ 06 апреля 2016

К сожалению, это исключение и его сообщение происходят глубоко внутри кода платформы и не могут быть просто заменены. Но одну вещь, которую вы можете сделать, это полностью обойти это исключение, написав свой ValidationRule. Например:

public class Int32ValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        if (string.IsNullOrEmpty((string)value))
            return ValidationResult.ValidResult;

        int number;
        return int.TryParse(value.ToString(), out number)
            ? ValidationResult.ValidResult
            : new ValidationResult(false, "Please enter a valid integer");
    }
}

Конечно, ядерная опция заключается в том, чтобы превратить CertainProperty в string и позволить вашей модели или модели представления проверить его с помощью IDataErrorInfo, но это будет серьезным изменением по сравнению с существующим кодом.

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