自定义Mahapps.MetroWindow关闭按钮

pkl*_*luz 6 wpf xaml mahapps.metro

我正在使用Mahapps.MetroWindow(http://mahapps.com/)来设计我的应用程序外观,现在我正在寻找自定义X /关闭按钮外观的正确方法.默认情况下,MetroWindow将自定义样式应用于所有三个命令按钮.我希望在Windows中始终将"关闭"按钮设置为红色鼠标悬停为红色.

到目前为止我发现的是,我可以将WindowCloseButtonStyle属性设置为自定义样式.我是这样做的:

<controls:MetroWindow x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
    Title="MainWindow" 
    Height="350" 
    Width="525"
    WindowCloseButtonStyle="{DynamicResource RedCloseWindowButtonStyle}">
...
Run Code Online (Sandbox Code Playgroud)

在一个单独的XAML文件中,我将样式定义为

<Style x:Key="RedCloseWindowButtonStyle"
       TargetType="{x:Type Button}"
       BasedOn="{StaticResource MetroBaseWindowButtonStyle}">
    <Setter Property="XXX"
               Value="XXX" />
</Style>
Run Code Online (Sandbox Code Playgroud)

我假设我必须在样式设置器中填写XXX的空白.由于我是Windows开发的新手,我的问题是:我感兴趣的属性是什么?我在哪里可以找到一个浏览器来根据给定的上下文浏览可用的属性?如果我想完成上面描述的内容,那么风格的价值是什么?

pun*_*r76 6

这是具有鼠标悬停/按下效果的关闭按钮的继承的自定义样式:

<Style x:Key="MetroWindowCloseButtonStyle"
       TargetType="{x:Type Button}"
       BasedOn="{StaticResource MetroWindowButtonStyle}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid x:Name="grid"
                      Background="{TemplateBinding Background}">
                    <ContentPresenter x:Name="contentPresenter"
                                      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                      Margin="{TemplateBinding Padding}"
                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                      SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                      RecognizesAccessKey="True"
                                      Opacity="0.75" />
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver"
                             Value="True">
                        <Setter TargetName="contentPresenter"
                                Property="Opacity"
                                Value="1" />
                        <Setter TargetName="grid"
                                Property="Background"
                                Value="#E04343" />
                    </Trigger>
                    <Trigger Property="IsMouseOver"
                             Value="False">
                        <Setter TargetName="contentPresenter"
                                Property="Opacity"
                                Value=".5" />
                    </Trigger>
                    <Trigger Property="IsPressed"
                             Value="True">
                        <Setter TargetName="grid"
                                Property="Background"
                                Value="#993D3D" />
                    </Trigger>
                    <Trigger Property="IsEnabled"
                             Value="false">
                        <Setter Property="Foreground"
                                Value="#ADADAD" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

原始(过时)样式可以在GitHub找到

希望能有所帮助。