【问题标题】:OverridesDefaultStyle together with BasedOn in WPF在 WPF 中覆盖 DefaultStyle 和 BasedOn
【发布时间】:2013-10-15 14:07:17
【问题描述】:

如果您将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 是真还是假有什么区别。

【问题讨论】:

    标签: wpf xaml styles


    【解决方案1】:

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

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

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

    斜体文字来自 MSDN 上的FrameworkElement.OverridesDefaultStyle Property 页面

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 2010-12-12
      • 1970-01-01
      • 2010-11-30
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 2011-01-15
      相关资源
      最近更新 更多