wpf弹出窗口的行为

时间:2016-12-23 06:20:54

标签: wpf xaml

目前我正在开发包含标签的wpf popup,该标签由控件模板内的文本块组成。我的问题是弹出窗口有一个底部边框阴影。弹出窗口已经有一个边框,这个阴影效果增加了底部边框厚度,看起来像这样(请查看下面的链接以查看弹出窗口的截图)。

Wpf代码就像这样

标签控制模板样式

     <Style x:Key="popuplabelstyle" TargetType="{x:Type Label}">
            <Setter Property="OverridesDefaultStyle" Value="true" />        
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Label}">
                        <Border BorderBrush="Red" x:Name="labelBorder"   BorderThickness="1" Padding="12" Background="White" Height="auto" MinHeight="260" Width="220">
                            <StackPanel>
                                <TextBlock Text="ABCD" Margin="0,0,0,4" />
                                <TextBlock Text="abcd" Margin="0,4,0,0" />
                            </StackPanel>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

弹出窗口的xaml代码

<Popup x:Name="Mypopup" Panel.ZIndex="2" Placement="MousePoint"  HorizontalOffset="10" VerticalOffset="10" IsOpen="{Binding ">
<Label Style="{StaticResource popuplabelstyle}"/>
</Popup>

我不知道为什么会这样发生。任何人都可以帮我解决这个问题吗?

查看弹出窗口in below link

的屏幕截图

1 个答案:

答案 0 :(得分:0)

尝试将Border的SnapsToDevicePixels和/或UseLayoutRounding属性设置为True以启用像素捕捉渲染:

<ControlTemplate TargetType="{x:Type Label}">
    <Border BorderBrush="Red" x:Name="labelBorder"  
                                BorderThickness="1" Padding="12" Background="White" Height="auto" MinHeight="260" Width="220"
                                SnapsToDevicePixels="True" UseLayoutRounding="True">
        <StackPanel>
            <TextBlock Text="ABCD" Margin="0,0,0,4" />
            <TextBlock Text="abcd" Margin="0,4,0,0" />
        </StackPanel>
    </Border>
</ControlTemplate>

这应该使边框看起来更清晰。

When should I use SnapsToDevicePixels in WPF 4.0?