从按钮WPF中删除阴影

时间:2014-09-18 14:43:38

标签: c# wpf button styles shadow

我在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 BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Background="{TemplateBinding Background}"
                            Height="{TemplateBinding Height}"
                            Width="{TemplateBinding Width}">
                        <ContentPresenter Content="{TemplateBinding Content}"
                                          ContentTemplate="{TemplateBinding ContentTemplate}"
                                          HorizontalAlignment="Center"
                                          VerticalAlignment="Center" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="Red"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

然后我将这种风格用于Button控件:

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

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

1 个答案:

答案 0 :(得分:3)

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

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