如何更改MahApps中所有命令按钮的前景色

use*_*133 6 wpf xaml button foreground mahapps.metro

有没有办法在MetroWindow中更改按钮前景?我甚至试图覆盖IronicallyNamedChromelessButtonStyle但前景色仍然相同.

编辑:按钮位于窗口栏中(例如,关闭,最小化,最大化).

use*_*133 12

深入了解MahApps编码后......以下是负责按钮的来源:https: //github.com/MahApps/MahApps.Metro/blob/master/MahApps.Metro/Themes/MetroWindow.xaml If仔细观察,你会发现每个样式都有触发器,用硬编码的"White"覆盖样式前景:

<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>
Run Code Online (Sandbox Code Playgroud)

我的解决方案是覆盖所有必要的样式触发器:

<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>
Run Code Online (Sandbox Code Playgroud)

希望这对我的任何人都有帮助.特别感谢@Rui和@Sankarann的想法和帮助.如果有人有更好的解决方案,请分享.


Rui*_*Rui 0

您可以使用隐式样式。隐式样式是没有“键”的样式,例如,如果您在 Application.Resources 中添加此样式,它将影响应用程序中的所有按钮:

<Application.Resources>
  <Style TargetType="Button">
    <Setter Property="Foreground" Value="Blue"/>
  </Style>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

例如,您可以在网格的资源中设置它,它只会影响该网格内的按钮。