Валидация вызывается до или после Coercion при установке значения DependencyProperty? - PullRequest
4 голосов
/ 10 октября 2008

Я создал простой класс с DependencyProperty. При установке значения я заметил, что ValidateValueCallback вызывается перед CoerceValueCallback.

В wpftutorial и в других книгах говорится, что принуждение вызывается перед проверкой.

Ответы [ 2 ]

2 голосов
/ 10 октября 2008

Да, я наблюдал то же самое. Тогда кажется, что проверка действительно предшествует принуждению. Когда новое значение установлено, оно проверяется. Если принуждение изменяет / ограничивает значение, оно должно быть проверено снова. Технически, проверка всегда происходит сразу после «набора», если мы рассматриваем принуждение как просто еще один «набор».

Я полагаю, что другие сайты / книги предполагают, хотя и запутанное, что проверка особенно происходит после принуждения. Кажется, это происходит после любого «набора».

2 голосов
/ 10 октября 2008

3.5sp1 здесь.

MSDN , по-видимому, подразумевает, что проверка происходит до принуждения. Это соответствует тому, что вы обнаружили.

Я сделал это сам, и ValidateValueCallback предшествует CoerceValueCallback. Я даже прочитал источник в Reflector и подтвердил то же самое, хотя трудно следовать всему этому коду и точно знать все возможные пути.

Интересно. Интересно, было ли наоборот в более ранней версии.

Edit:

Видимо, когда вы возвращаете значение, отличное от CoerceValueCallback, ValidateValueCallback вызывается снова для нового значения. Проверка-принуждать-Validate.

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