在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
相关产品推荐
相关产品推荐

