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