2011-07-07 38 views
3

如果我有ContextMenu(比如)一个子类,称为MyContextMenu和我定义我的风格与MergedDictionariesTargetType=ContextMenu,为什么会发生这种风格并不适用于MyContextMenu实例?Silverlight的 - 隐式的继承问题

它的工作对所有的基类的实例,而不是任何的子类。

我可以创造更多的风格和使用BasedOn,但就是不干净。看起来它应该没有这个工作。

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

回答

3

根据this article

注意,对于要应用的类型化样式的TargetType必须完全匹配。例如,如果你指定样式的钥匙,那么它的确定目标元素是TargetType的的子类。但是一个类型化的风格通常会被应用到完全匹配匹配的元素上!这是为了防止意外。例如,您可能已经为应用程序中的所有切换按钮创建了一个样式,并且您不希望将此样式应用于任何CheckBox(源自ToggleButton)。

同样可以the official documentation读取(中途下)

+0

答案当然是我不看的地方。谢谢,我想当时没有什么可以做的。至少我们有'BasedOn'。 – Kir