带有网格的XAML *运算符的间距问题

时间:2010-11-05 05:02:43

标签: wpf xaml

所以,我只想了解为什么在我的WPF应用程序中发生这种情况,因为它似乎在没有我想要的情况下添加“空格”或淡淡的线条......

我有以下XAML

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication3.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
<Grid x:Name="LayoutRoot" ShowGridLines="False" Grid.Row="0">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>          
    </Grid.RowDefinitions>
    <Border Grid.Row="0"  CornerRadius="10,10,0,0" Height="10" Background="Black"/>
    <Border Grid.Row="1"  Background="Black">

    </Border>           
    <Border Grid.Row="2" CornerRadius="0,0,10,10" Height="10" Background="Black"/>
</Grid>
<StackPanel Grid.Row="1">
    <Button>Some Button</Button>
</StackPanel>
</Grid>

其中呈现以下窗口......

Window Pic

问题是如果仔细观察最后一行连接器,你会看到一条微弱的灰线......

Faint Gray Line Pic

但是,如果我用固定像素大小(即<RowDefinition Height="*"/>)替换内部网格上的<RowDefinition Height="300"/>,该线就会消失。为什么我正在使用*值时,它似乎是在添加这个“灰线”/“空格”?

2 个答案:

答案 0 :(得分:4)

我认为问题是抗锯齿

  1. 你的效果
  2. SnapsToDevicePixels =“True”
  3. UseLayoutRounding =“False”
  4. RenderOptions.EdgeMode = “别名” alt text

答案 1 :(得分:2)

看起来布局舍入问题对我来说。如果您使用的是WPF 4,请尝试在外部网格上设置UseLayoutRounding="true"。否则,请查看SnapToDevicePixels

http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.uselayoutrounding.aspx

http://www.wpftutorial.net/DrawOnPhysicalDevicePixels.html