Свойства зависимостей с подчиненными свойствами обновляют главное свойство? - PullRequest
3 голосов
/ 21 декабря 2011

Я пытаюсь найти решение для следующей проблемы:

У меня есть класс DateTimeRange, который содержит 3 свойства:

  • Начало: DateTime
  • Конец: DateTime
  • Длина: Длина (= конец-начало)

Этот класс используется в моем проекте как свойство зависимости от различных элементов управления. Эти значения являются изменяемыми, например, если изменяется начало, конец будет перемещаться с тем же смещением (с одинаковой длиной).

Моя проблема заключается в том, что в коде, который прослушивает обновления диапазона, не получает событие, когда какое-либо из свойств изменилось, только при замене всего объекта.

Я хочу позволить классу DateTimeRange уведомлять пользователя о том, что при изменении свойства изменился весь объект, а не только одно свойство.

Я пытался сделать DateTimeRange неизменной структурой. Но это делает невозможным двухстороннее связывание данных с любым из его свойств.

У кого-нибудь есть предложения, как это сделать? ИМО, эта проблема очень расстраивает, так как та же проблема происходит, например, с полями (вы не можете привязать к Margin.Left элемента управления).

1 Ответ

2 голосов
/ 21 декабря 2011

Фреймворк на самом деле не поддерживает это требование. Подход, который я выбрал бы, состоял бы в том, чтобы DateTimeRange реализовать INotifyPropertyChanged, вызывая событие всякий раз, когда изменяется любое из его свойств. В классе, имеющем DateTimeRange в качестве свойства зависимости, добавляйте / удаляйте обработчики для INotifyPropertyChanged при изменении свойства. Затем в обработчике этого события вы можете выполнить требуемое действие.

Обратите внимание, вы можете сделать DateTimeRange a DependencyObject, что позволит вам создать двухстороннюю привязку к его свойствам.

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