正在删除按钮WPF中的阴影

本文关键字:阴影 WPF 按钮 删除 | 更新日期: 2023-09-27 18:22:18

我在WPF应用程序中为按钮创建了样式:

<Style x:Key="buttonStyle" TargetType="Button">
    <Setter Property="Border.BorderBrush" Value="Black" />
    <Setter Property="Border.BorderThickness" Value="1" />
    <Setter Property="Border.Background" Value="White" />
    <Setter Property="Height" Value="25" />
    <Setter Property="Width" Value="100" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border
                    Width="{TemplateBinding Width}"
                    Height="{TemplateBinding Height}"
                    Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}">
                    <ContentPresenter
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        Content="{TemplateBinding Content}"
                        ContentTemplate="{TemplateBinding ContentTemplate}" />
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" Value="Red" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

然后我将这种风格应用于按钮控制:

<Button Style="{StaticResource buttonStyle}" Grid.Row="1" Grid.Column="1" Content="Press"/>

当我运行我的应用程序时,我会看到按钮下方和右侧的灰色阴影。此外,当我在Visual Studio视图中查看时,我看不到阴影。如何删除此效果?有人有想法或完全其他的方法吗?

正在删除按钮WPF中的阴影

你确定你看到的实际上是一个阴影吗?它可能只是一个模糊的边缘。WPF的布局系统基于与设备无关的像素,因此元素的边缘可能位于两个设备像素之间,在这种情况下,它可能会显得模糊。

通过在WPF 4.0及更高版本中对父元素设置UseLayoutRounding="True",可以强制设备像素捕捉;在早期版本中,您可以尝试SnapsToDevicePixels="True"