You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在MahApps.Metro中正确继承已有自定义样式的方法及问题排查

问题原因

你的CustomNoBorderButtonStyle样式继承的是原生MahApps的基础按钮样式(MahApps.Styles.Button),而非你自己定义的全局自定义按钮样式,自然就继承不到全局样式里设置的红色背景、HorizontalAlignment/VerticalAlignment等属性。

解决方法

将CustomNoBorderButtonStyle的BasedOn指向你的全局自定义样式即可。因为你的全局样式是隐式样式(未设置x:Key,仅通过TargetType匹配所有Button),可以通过{x:Type Button}来引用它:

<Style x:Key="CustomNoBorderButtonStyle"
       TargetType="{x:Type Button}"
       BasedOn="{StaticResource {x:Type Button}}">
    <Setter Property="BorderThickness"
            Value="0" />
    <Setter Property="controls:ControlsHelper.CornerRadius"
            Value="0" />
</Style>

如果后续你给全局样式添加了x:Key(比如x:Key="GlobalButtonStyle"),直接把BasedOn改成{StaticResource GlobalButtonStyle}即可。

另外注意你原来的全局样式存在两处语法错误,需要修正:

  • Background的Value="Red缺少闭合引号,应改为Value="Red"
  • 样式标签未闭合,最后一行应为</Style>

修正后的全局样式:

<Style TargetType="{x:Type Button}"
       BasedOn="{StaticResource MahApps.Styles.Button}">
    <Setter Property="HorizontalAlignment"
            Value="Left" />
    <Setter Property="VerticalAlignment"
            Value="Top" />
    <Setter Property="BorderThickness"
            Value="2" />
    <Setter Property="Background"
            Value="Red" />
</Style>

内容的提问来源于stack exchange,提问作者markzzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:20:18