«Ничего не подсчитано, если никто его не слушает»
Исходный объект не должен заботиться о том, «слушает» ли его кто-нибудь. Он должен обновлять свое состояние в любом случае, так что это не проблема.
«Но тогда становится трудно заставить другие элементы связываться с ним ...»
Вы можете реализовать INotifyPropertyChanged
в своем классе и вызывать событие PropertyChanged
для VideoDimension
всякий раз, когда вы хотите уведомить подписчиков.
"Но объект-владелец все еще может изменить его "
Не только может - он должен. Это его ответственность. Устанавливает ли он свойство зависимости только для чтения, явно используя ключ, или вызывает событие PropertyChanged
для свойства CLR, доступного только для чтения, - это просто дело вкуса.
Вы не должны заставлять внешние вызывающие стороны использовать конвертер, чтобы получить значение. С двумя другими вариантами все в порядке, и их следует рассматривать как решения, а не как обходные пути.