3

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

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

我可以创建其他样式并使用BasedOn,但这并不干净。似乎没有它应该可以工作。

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

4

1 回答 1

3

根据这篇文章

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

官方文档中也可以阅读(中途下)

于 2011-07-07T18:53:50.490 回答