Нам нужно переопределить метаданные DependencyProperty
для нашего подкласса. Теперь я знаю, что могу использовать OverrideMetadata
и указать совершенно новый объект FrameworkPropertyMetadata
, но по большей части я хочу, чтобы эти новые метаданные были точно такими же, как существующие метаданные, за исключением одного дополнительного установленного флага (в частности, AffectsMeasure
)
Моя мысль состоит в том, чтобы получить существующие метаданные, создать новый объект метаданных, вручную скопировать все элементы со старого на новый (он не поддерживает Clone
), изменив тот, который я хочу, затем использовать новый в вызове OverrideMetadata. Но да ** это много работы для чего-то столь простого!
Я что-то здесь упускаю?
EDIT
Перво-наперво, я имел в виду AffectsMeasure
, а не AffectsRender
(который я изменил выше),
НО ... Я только что узнал, что у нашего класса уже установлен флаг AffectsMeasure
для свойства Width
. Реальная проблема заключается в том, что для контейнеров ListBox
(например, ListBoxItem
) MeasureOverride
вызывается только один раз при первой инициализации.
Поскольку это технически несвязанный вопрос, я начну новый и закрою этот.
Вот ссылка на новый вопрос:
Почему ListBoxItem не вызывает MeasureOverride при изменении его ширины?