OverridesDefaultStyle 以及 WPF 中的 BasedOn



如果将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属性"页

相关内容

  • 没有找到相关文章

最新更新