去除WPF中GroupBox边框的白边

来源:互联网 发布:js判断变量undefined 编辑:程序博客网 时间:2024/05/23 16:56

使用WPF中的GroupBox控件时,如果背景色不是白色,那么会在GroupBox边框出现白边,如图1所示:


图1

经过一番网上搜索,最终发现解决方法:WPF――――4.去除GroupBox白色间隔,效果如图2所示


图2

代码如下:

    <Window.Resources>        <BorderGapMaskConverter x:Key="BorderGapMaskConverter"/>        <Style x:Key="GroupboxWithoutWhiteBorder" TargetType="{x:Type GroupBox}">            <Setter Property="BorderBrush" Value="#D5DFE5" />            <Setter Property="BorderThickness" Value="1" />            <Setter Property="Template">                <Setter.Value>                    <ControlTemplate TargetType="{x:Type GroupBox}">                        <Grid SnapsToDevicePixels="true">                            <Grid.ColumnDefinitions>                                <ColumnDefinition Width="6" />                                <ColumnDefinition Width="Auto" />                                <ColumnDefinition Width="*" />                                <ColumnDefinition Width="6" />                            </Grid.ColumnDefinitions>                            <Grid.RowDefinitions>                                <RowDefinition Height="Auto" />                                <RowDefinition Height="Auto" />                                <RowDefinition Height="*" />                                <RowDefinition Height="6" />                            </Grid.RowDefinitions>                            <Border CornerRadius="4" Grid.Row="1" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="4" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="Transparent" Background="{TemplateBinding Background}" />                            <Border Name="Header" Padding="3,1,3,0" Grid.Row="0" Grid.RowSpan="2" Grid.Column="1">                                <ContentPresenter ContentSource="Header" RecognizesAccessKey="true" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />                            </Border>                            <ContentPresenter Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />                            <Border Grid.Row="1" Grid.RowSpan="3" Grid.ColumnSpan="4"  BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="3">                                <Border.OpacityMask>                                    <MultiBinding Converter="{StaticResource BorderGapMaskConverter}" ConverterParameter="7">                                        <Binding ElementName="Header" Path="ActualWidth" />                                        <Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}" />                                        <Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}" />                                    </MultiBinding>                                </Border.OpacityMask>                            </Border>                        </Grid>                    </ControlTemplate>                </Setter.Value>            </Setter>        </Style>    </Window.Resources>    <Grid Background="Green">        <GroupBox Header="WPF边框白边" Margin="20" Style="{StaticResource GroupboxWithoutWhiteBorder}"/>    </Grid>


项目下载


0 1
原创粉丝点击