在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上的页面