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