Разбирался с Coercion в биндинге WPF, и наткнулся на
старую темуАвтор:
Дата: 21.07.09
. Попытался разобраться и ответить на вопрос "баг или фича?"
Оказывается, фича, обеспечивающая отсутствие зацикливаний при смене значений зависимых свойств (dependency properties).
Да вот, собственно, я даже нарисовал (см. ниже). Еще подумал, что было бы, если бы CLR-property у ТС той темы получал бы уже Coerced Value. Был бы "плохой дизайн"
Тоже его нарисовал. Т.е. устойчивость биндинга обеспечивается тем, что у любого DependecnyProperty может быть только один источник. А т.к. этот источник может быть другим DependencyProperty со своим CoerceValueCallback'ом, то возникает проблема зацикливания биндинга. Вот и объяснение.
Прикрепил еще проектик по теме. Только я убрал DataContext'ный объект с CLR-property — ни при чем он здесь
Заменил TextBox'ами. В общем, в проекте этот эффект сразу виден, кому надо скачает и посмотрит, здесь код приводить не буду.
Вот картинка: