如果我有ContextMenu
的子类(例如)名为MyContextMenu
并且我在MergedDictionaries
中使用TargetType=ContextMenu
定义了一个样式,为什么这种样式不适用于MyContextMenu
的实例?
它适用于基类的所有实例,但不适用于任何子类。
我可以创建其他样式并使用BasedOn
,但这不是很干净。看起来它应该没有它。
我确保我的子类调用基础构造函数,并验证DefaultStyleKey
是我的基类的类型。
答案 0 :(得分:3)
根据this article:
请注意,TargetType必须完全匹配要应用的类型样式。例如,如果指定Style的Key,则target元素可以作为TargetType的子类。但是类型化的样式通常会应用于类型完全匹配的元素!这样做是为了防止意外。例如,您可能已在应用程序中为所有ToggleButtons创建了一个Style,并且您不希望将此样式应用于任何CheckBoxes(源自ToggleButton)。
同样可以在the official documentation(半途而废)
中阅读