Эта проблема не давала мне покоя, поэтому я снова открыл ее.
Во-первых, я хотел бы извиниться за каждого, кто лично воспринимает мой «анти-шаблонный» комментарий. Решения, предложенные здесь, действительно, как это было сделано в WPF. Однако, тем не менее, ИМХО, они вызваны плохой практикой, недостатками в их рамках.
Я утверждаю, что руководство , скрывающее информацию , предписывает, что, когда B зависит от A, A не должен знать о B. Например, когда B происходит от A, A должен нет кода, говорящего: «Если мой тип времени выполнения действительно B, то делай то и это». Аналогично, когда B использует A, у A не должно быть кода, говорящего: «Если объект, вызывающий этот метод, является B, то ...»
Отсюда следует, что если свойство B зависит от свойства A, то A не должен отвечать за непосредственное оповещение B.
И наоборот, поддержание (как я сейчас делаю) графа зависимостей внутри NotifyPropertyChanged также является анти-паттерном. Этот метод должен быть легким и выполнять то, что он называет состояниями, а не поддерживать отношения зависимости между свойствами.
Итак, я думаю, что необходимое решение заключается в аспектно-ориентированном программировании : Peroperty B должен использовать атрибут «I-зависимость-от (свойство A)», а некоторые программы переписывания кода должны создавать граф зависимостей. и измените NotifyPropertyChanged прозрачно.
Сегодня я - один программист, работающий над одним продуктом, поэтому я не могу больше оправдываться этим, но я считаю, что это правильное решение.