有没有办法改变 MetroWindow 中的按钮前景?我什至尝试覆盖 IronicallyNamedChromelessButtonStyle 但前景色仍然相同。
编辑:按钮位于窗口栏中(例如关闭、最小化、最大化)。
有没有办法改变 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 的想法和帮助。如果有人有更好的解决方案,请分享。
您可以使用隐式样式。隐式样式是没有“键”的样式,例如,如果您在 Application.Resources 中添加此样式,它将影响应用程序中的所有按钮:
<Application.Resources>
<Style TargetType="Button">
<Setter Property="Foreground" Value="Blue"/>
</Style>
</Application.Resources>
例如,您可以将其设置在网格的资源中,它只会影响该网格内的按钮。
是的,你的权利通过 appbar_canvas 应用颜色
Fill="{DynamicResource BlackBrush}"
因此,由于您无法控制 BlackBrush,因此您无法真正对其应用 SolidColorBrush,因为 MahApps 库中的其他一些控件会覆盖您的设置。
您需要将 NuGet 指向 Loose 资源文件(这样您就可以在本地使用 Icons.xaml 文件)
复制要更改颜色的应用栏图标(可能创建一个名为 MyIcons.xaml 的资源字典并将它们保存在其中,将 MyIcons.xaml 添加到您的 App.xaml MergedDictionaries)
然后在 MyIcons.xaml 中定义您的图标(也使用新颜色):
<SolidColorBrush x:Key="IconBrushOrange" Color="Orange" />
<Canvas x:Key="my_connecting" All other fields...>
<Path Stretch="Fill" Fill="{StaticResource IconBrushOrange}" All other fields.... />
</Canvas>
然后在您的 UI 中:
<Rectangle Width="20" Height="20">
<Rectangle.Fill>
<VisualBrush Stretch="Fill" Visual="{StaticResource my_connecting}" />
</Rectangle.Fill>
</Rectangle>
只需在窗口资源中重新定义 Brush 即可:
<SolidColorBrush x:Key="MahApps.Brushes.IdealForeground" Color="WhateverColor" />