在Mahapps.Metro中设置WindowButtonCommands样式

本文关键字:WindowButtonCommands 样式 设置 Mahapps Metro | 更新日期: 2023-09-27 18:28:45

我想更改WPF应用程序的"最小"、"最大"answers"关闭"按钮的样式。

我正在使用Mahapps。Metro和我已经成功地实现了我想要的结果,但只是使用了MetroWindow类中过时的WindowMinButtonStyleWindowMaxButtonStyleWindowCloseButtonStyle属性。例如,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

在Mahapps.Metro中设置WindowButtonCommands样式

基于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>

希望这能有所帮助。

相关文章:
  • 没有找到相关文章