Silverlight - неявная проблема наследования стилей - PullRequest
3 голосов
/ 07 июля 2011

Если у меня есть подкласс ContextMenu (например) с именем MyContextMenu, и я определяю стиль в моем MergedDictionaries с помощью TargetType=ContextMenu, почему этот стиль не применяется к экземплярам MyContextMenu?

Он работает для всех экземпляров базового класса, но не для всех подклассов.

Я могу создать дополнительные стили и использовать BasedOn, но это не чисто. Похоже, это должно работать без этого.

Я убедился, что мои подклассы вызывают базовый конструктор, и проверил DefaultStyleKey как тип моего базового класса.

1 Ответ

3 голосов
/ 07 июля 2011

Согласно этой статье :

Обратите внимание, что тип TargetType должен точно соответствовать типизированному стилю, который будет применен. Например, если вы укажете ключ стиля, тогда целевой элемент будет подклассом TargetType. Но типизированный стиль обычно применяется к элементам, тип которых точно соответствует! Это сделано для предотвращения сюрпризов. Например, вы, возможно, создали стиль для всех кнопок ToggleButton в своем приложении, и вы не хотите, чтобы этот стиль применялся к любым флажкам (который происходит от ToggleButton).

То же самое можно прочитать в официальной документации (на полпути вниз)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...