Silverlight - 隐式样式继承问题

时间:2011-07-07 18:48:44

标签: silverlight styles implicit-style

如果我有ContextMenu的子类(例如)名为MyContextMenu并且我在MergedDictionaries中使用TargetType=ContextMenu定义了一个样式,为什么这种样式不适用于MyContextMenu的实例?

它适用于基类的所有实例,但不适用于任何子类。

我可以创建其他样式并使用BasedOn,但这不是很干净。看起来它应该没有它。

我确保我的子类调用基础构造函数,并验证DefaultStyleKey是我的基类的类型。

1 个答案:

答案 0 :(得分:3)

根据this article

  

请注意,TargetType必须完全匹配要应用的类型样式。例如,如果指定Style的Key,则target元素可以作为TargetType的子类。但是类型化的样式通常会应用于类型完全匹配的元素!这样做是为了防止意外。例如,您可能已在应用程序中为所有ToggleButtons创建了一个Style,并且您不希望将此样式应用于任何CheckBoxes(源自ToggleButton)。

同样可以在the official documentation(半途而废)

中阅读