在Mahapps.Metro中设置WindowButtonCommands样式
本文关键字:WindowButtonCommands 样式 设置 Mahapps Metro | 更新日期: 2023-09-27 18:28:45
我想更改WPF应用程序的"最小"、"最大"answers"关闭"按钮的样式。
我正在使用Mahapps。Metro和我已经成功地实现了我想要的结果,但只是使用了MetroWindow
类中过时的WindowMinButtonStyle
、WindowMaxButtonStyle
和WindowCloseButtonStyle
属性。例如,WindowMinButtonStyle
属性上的过时消息显示:
此属性将在下一版本中删除。您应该在WindowButtonCommands中使用LightMinButtonStyle或DarkMinButtonStyle来覆盖样式。
问题是,我不知道该如何具体做到这一点。MetroWindow
类有一个名为WindowButtonCommands
的字段,但它是internal
,所以这似乎是错误的树。我是WPF的新手,他们网站上的指南中没有关于如何做到这一点的信息,所以我很失落。我希望有人能为我提供一个简短的代码示例,为我指明正确的方向。
EDIT-这是产生警告的XAML:
<controls:MetroWindow x:Class="Project.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
WindowMinButtonStyle="{DynamicResource DarkWindowButtonStyle}"
WindowMaxButtonStyle="{DynamicResource DarkWindowButtonStyle}"
WindowCloseButtonStyle="{DynamicResource DarkWindowCloseButtonStyle}">
<Grid>
</Grid>
</controls:MetroWindow>
我还应该提到我使用的是Mahapps.Metro的新v1.2.0版本,但我在以前的版本中遇到了同样的问题。具有Obsolete
属性的Mahapps.Metro源代码:https://github.com/MahApps/MahApps.Metro/blob/develop/MahApps.Metro/Controls/MetroWindow.cs#L88-L93
基于crumbl3d的更改,一个简短的如何…
现在有两种样式(浅色和深色)将基于OverrideDefaultWindowCommandsBrush
属性(在MetroWindow
可用)及其亮度(默认为浅色样式)使用。
所以,把这些放在你的App.xaml
(或其他什么)上
<Style x:Key="CustomLightMetroWindowButtonStyle" TargetType="{x:Type Button}" BasedOn="{StaticResource LightMetroWindowButtonStyle}">
<Setter Property="Foreground" Value="Chocolate" />
</Style>
<Style x:Key="CustomDarkMetroWindowButtonStyle" TargetType="{x:Type Button}" BasedOn="{StaticResource DarkMetroWindowButtonStyle}">
<Setter Property="Foreground" Value="Crimson" />
</Style>
<Style TargetType="{x:Type controls:WindowButtonCommands}" BasedOn="{StaticResource {x:Type controls:WindowButtonCommands}}">
<Setter Property="LightMinButtonStyle" Value="{StaticResource CustomLightMetroWindowButtonStyle}" />
<Setter Property="LightMaxButtonStyle" Value="{StaticResource CustomLightMetroWindowButtonStyle}" />
<Setter Property="LightCloseButtonStyle" Value="{StaticResource CustomLightMetroWindowButtonStyle}" />
<Setter Property="DarkMinButtonStyle" Value="{StaticResource CustomDarkMetroWindowButtonStyle}" />
<Setter Property="DarkMaxButtonStyle" Value="{StaticResource CustomDarkMetroWindowButtonStyle}" />
<Setter Property="DarkCloseButtonStyle" Value="{StaticResource CustomDarkMetroWindowButtonStyle}" />
</Style>
编辑
如果你只想在一个窗口中使用它,那么你可以用一个键创建一个样式,并在这个窗口中使用,如下所示:
<controls:MetroWindow.WindowButtonCommands>
<controls:WindowButtonCommands Style="{DynamicResource CustomWindowButtonCommandsStyleLocatedtInAppXaml}" />
</controls:MetroWindow.WindowButtonCommands>
位于App.xaml 中的样式
<Style x:Key="CustomWindowButtonCommandsStyleLocatedtInAppXaml" TargetType="{x:Type controls:WindowButtonCommands}" BasedOn="{StaticResource {x:Type controls:WindowButtonCommands}}">
<Setter Property="LightMinButtonStyle" Value="{StaticResource CustomLightMetroWindowButtonStyle}" />
<Setter Property="LightMaxButtonStyle" Value="{StaticResource CustomLightMetroWindowButtonStyle}" />
<Setter Property="LightCloseButtonStyle" Value="{StaticResource CustomLightMetroWindowButtonStyle}" />
<Setter Property="DarkMinButtonStyle" Value="{StaticResource CustomDarkMetroWindowButtonStyle}" />
<Setter Property="DarkMaxButtonStyle" Value="{StaticResource CustomDarkMetroWindowButtonStyle}" />
<Setter Property="DarkCloseButtonStyle" Value="{StaticResource CustomDarkMetroWindowButtonStyle}" />
</Style>
希望这能有所帮助。