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的想法和帮助.如果有人有更好的解决方案,请分享.
您可以使用隐式样式。隐式样式是没有“键”的样式,例如,如果您在 Application.Resources 中添加此样式,它将影响应用程序中的所有按钮:
<Application.Resources>
<Style TargetType="Button">
<Setter Property="Foreground" Value="Blue"/>
</Style>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
例如,您可以在网格的资源中设置它,它只会影响该网格内的按钮。
归档时间: |
|
查看次数: |
4812 次 |
最近记录: |