如果将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
是真的还是假的有什么区别。
如果要同时使用这两个属性,则最终会得到一个MenuButton
对象(在您的示例中),该对象从您的MenuButton
Style
中获取其所有Style
信息,其余属性将来自您的ToolBar.ButtonStyleKey
Style
。至少,这在理论上是正确的,因为我实际上从未使用过这种安排。
特别是,将 OverridesDefaultStyle
属性设置为 True
是"应该"使样式化元素不使用主题样式属性,而是从本地应用程序样式获取其所有Style
值。但是,我还发现,在某些情况下,将此属性设置为 True
似乎没有任何区别。
另一方面,当此属性设置起作用时,它将删除默认ControlTemplate
,因此若要支持与默认主题样式相同的功能,必须为备用样式提供复制相同结构的控件模板。
斜体文本来自 MSDN 上的"
FrameworkElement.OverridesDefaultStyle
属性"页