Как работает ValidatesOnExceptions - PullRequest
       0

Как работает ValidatesOnExceptions

5 голосов
/ 08 декабря 2011

на основе этого примера

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validatesonexceptions.aspx

Кажется, что ValidatesOnExceptions отвечает за перехват пользовательского исключения и добавление его в коллекцию Validation.Errors.

Проблема У меня такое же поведение, даже если для ValidatesOnExceptions установлено значение false

Может кто-нибудь объяснить, что мне не хватает?

Спасибо

Ответы [ 2 ]

4 голосов
/ 08 декабря 2011

ValidatesOnExceptions для отображения пользовательских исключений.Но если у вас есть TextBox привязка к свойству int, то перед привязкой происходит преобразование, которое может вызвать «красную рамку».

Чтобы попробовать это

<TextBox Text="{Binding IntField}"/>
<TextBox Text="{Binding StringField, ValidatesOnExceptions=False}"/>
<TextBox Text="{Binding StringField, ValidatesOnExceptions=True}"/>

public int IntField { get; set; }

private string stringField;
public string StringField
{
    get { return stringField; }
    set
    {
        throw new Exception();  text = stringField; }
    }
}

Введитечисло для каждого текстового поля:

  1. Красная граница из-за преобразования данных
  2. Нет красной границы, потому чтоValidatesOnExceptions false *
  3. Красная рамка, потому что ValidatesOnExceptions true

Надеюсь, это помогло.

3 голосов
/ 07 ноября 2013

Это зависит от версии используемой вами платформы.

В .NET 4 и 4.5 ответ nemesv правильный.Тем не менее он отличается от документации MSDN.

В .NET 3.5, когда был введен ValidatesOnExceptions, не было «красной границы» по умолчанию при сбое DataConversion.Если вы хотите получить это, вам нужно явно добавить ExceptionValidationRule в ValidationRules из Binding. MSDN (3.5-4.5) говорит, что вы могли бы просто установить ValidatiosOnExceptions на true, если вы хотите сокращение для этого.

Проблема в том, что документация в версии 4.0и 4.5 просто неверно, так как относится к поведению .NET 3.5

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