Требование 1
Допустим, у меня есть некоторая модель представления с двумя DateTime
свойствами, Start
и End
. Я бы хотел, чтобы для End
было установлено какое-то смещение от Start
, и чтобы оно сохранялось даже при изменении Start
. Это достаточно просто, прослушав уведомление свойства для Start
и затем установив End
.
Требование 2
Теперь давайте добавим забавную часть: я хочу иметь возможность прекратить корректировку End
, если пользователь явно ее изменит. Другими словами, скажем, это система бронирования авиабилетов, и мы хотим установить конечную дату на 3 дня позже (в зависимости от средней продолжительности пребывания), но если пользователь явно устанавливает конечную дату на определенную дату, то когда он / она снова устанавливает дату начала, дата окончания остается).
Проблема
На первый взгляд может показаться, что вы можете просто прослушать уведомление End
и установить какое-то значение, которое обработчик увидит при обработке Start
, и сказать: «Хорошо, я не настрою End
. Проблема в том, что End
не знает , почему изменяется, поэтому обработчик для изменения End
мгновенно мгновенно установит условие изменения остановки. Это нарушает требование # 1.
Как мне удовлетворить оба требования?