在WPF中重写DefaultStyle和BasedOn

在WPF中重写DefaultStyle和BasedOn,wpf,xaml,styles,Wpf,Xaml,Styles,如果将OverridesDefaultStyle设置为true,则不会使用默认样式。 同时使用BasedOn的结果是什么 <Style x:Key="MenuButton" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" TargetType="{x:Type c:MenuButton}"> <Setter Property="OverridesDefaultStyl

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

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

这两个说明有什么矛盾吗?
将被忽略的是
工具栏.ButtonStyleKey
的默认样式吗?

在这个特定的示例中,我看不出
OverridesDefaultStyle
是真是假有什么区别。

如果您同时使用这两个属性,您将得到一个
菜单按钮
对象(在您的示例中)它从
菜单按钮中获取所有
样式
信息,其余属性将来自
工具栏。按钮样式键
样式
。至少,这在理论上是正确的,因为我从来没有实际使用过这种安排

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

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

斜体文本来自MSDN上的页面