2

如果设置OverridesDefaultStyle为 true,则不会使用默认样式。同时使用的结果是什么BasedOn

<Style x:Key="MenuButton" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
           TargetType="{x:Type c:MenuButton}">
        <Setter Property="OverridesDefaultStyle" Value="True" />
</Style>

这两个指令是否以任何方式相互矛盾?它是被忽略
的默认样式吗? 在这个特定的例子中,我看不出是真是假有任何区别。ToolBar.ButtonStyleKey
OverridesDefaultStyle

4

1 回答 1

3

如果您要使用这两个属性,您最终会得到一个MenuButton对象(在您的示例中),该对象从您的所有信息中获取其Style信息,MenuButton Style其余属性将来自您的ToolBar.ButtonStyleKey Style. 至少,这在理论上是正确的,因为我实际上从未使用过这种安排。

特别是,将OverridesDefaultStyle属性设置True为“假定”以使样式元素不使用主题样式属性,而是从本地应用程序样式Style中获取其所有值。但是,我还发现在某些情况下,将此属性设置为似乎没有任何区别。True

另一方面,当此属性设置起作用时,它将删除默认设置ControlTemplate因此要支持与默认主题样式相同的功能,您必须提供具有复制相同结构的控件模板的替代样式

斜体文字来自MSDN上的FrameworkElement.OverridesDefaultStyleProperty page

于 2013-10-15T15:47:18.600 回答