有没有办法改变 MetroWindow 中的按钮前景?
我什至试图覆盖 IronicallyNamedChromelessButtonStyle 但前景色仍然相同。
编辑:
按钮位于窗口栏中(例如关闭、最小化、最大化)。
最佳答案
深入研究MahApps编码之后...以下是负责按钮的来源:
https://github.com/MahApps/MahApps.Metro/blob/master/MahApps.Metro/Themes/MetroWindow.xaml
如果仔细看,您会发现每种样式都有触发器,这些触发器会使用硬编码的“白色”来覆盖样式前景:
<Style.Triggers>
<DataTrigger Binding="{Binding ShowTitleBar, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Controls:MetroWindow}}}"
Value="True">
<Setter Property="Foreground"
Value="White" />
</DataTrigger>
<DataTrigger Binding="{Binding ShowTitleBar, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Controls:MetroWindow}}}"
Value="False">
<Setter Property="Background"
Value="Transparent" />
</DataTrigger>
</Style.Triggers>
我的解决方案是覆盖所有必需的样式触发器:
<Style TargetType="{x:Type MahControls:WindowButtonCommands}">
<Style.Triggers>
<DataTrigger Binding="{Binding ShowTitleBar, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MahControls:MetroWindow}}}"
Value="True">
<Setter Property="Foreground"
Value="{StaticResource IdealForegroundColorBrush}" />
</DataTrigger>
</Style.Triggers>
</Style>
希望这会对我的情况有所帮助。
特别感谢@Rui和@Sankarann的想法和帮助。
如果有人有更好的解决方案,请分享。