C# WPF:消除网格单元之间的透明度

C# WPF:消除网格单元之间的透明度,c#,.net,wpf,C#,.net,Wpf,我在WPF中有一个网格。网格有一个透明的背景(必要),每个单元格可能有不同颜色的固体背景,或者可能没有背景。当我在这些单元格中放置任意内容时,当两个相邻的单元格都有彩色背景(相同或不同的颜色,这无关紧要)时,通常(不可预测地)会有一条细的透明线将它们分隔开,使您可以通过该线处的网格进行查看 有人知道这是怎么解决的吗 编辑:我想在我的问题中提到它,但我尝试在任何地方启用SnapsToDevicePixels,但没有任何效果。没有看到任何代码,我猜您需要在网格中的元素上使用它。这产生了相同的问题,但

我在WPF中有一个网格。网格有一个透明的背景(必要),每个单元格可能有不同颜色的固体背景,或者可能没有背景。当我在这些单元格中放置任意内容时,当两个相邻的单元格都有彩色背景(相同或不同的颜色,这无关紧要)时,通常(不可预测地)会有一条细的透明线将它们分隔开,使您可以通过该线处的网格进行查看

有人知道这是怎么解决的吗


编辑:我想在我的问题中提到它,但我尝试在任何地方启用SnapsToDevicePixels,但没有任何效果。

没有看到任何代码,我猜您需要在网格中的元素上使用它。

这产生了相同的问题,但可能不是相同的确切原因。不过,如果我们能解决这个问题,它可能会给你一个提示

<Grid Background="Transparent">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="3*" />
            <RowDefinition Height="3*" />
            <RowDefinition Height="3*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label Grid.Column="0" Grid.Row="0" Background="PaleGoldenrod" />
        <Label Grid.Column="1" Grid.Row="0" Background="White" />
        <Label Grid.Column="2" Grid.Row="0" Background="PaleGoldenrod" />


        <Label Grid.Column="0" Grid.Row="1" Background="White" />
        <!-- This is in the significant cell -->
        <Label Grid.Column="1" Grid.Row="1" x:Name="SizeChangeLabel" Background="PaleGoldenrod">
            Watch this cell
        </Label>
        <Label Grid.Column="2" Grid.Row="1" Background="White" />

        <Label Grid.Column="0" Grid.Row="2" Background="PaleGoldenrod" />
        <Label Grid.Column="1" Grid.Row="2" Background="White" />
        <Label Grid.Column="2" Grid.Row="2" Background="PaleGoldenrod" />


        <Button x:Name="ReduceContentSize" Grid.Row="3" Grid.Column="0" Click="ReduceContentSize_Click">Reduce</Button>
        <Button x:Name="IncreaseContentSize" Grid.Row="3" Grid.Column="1"   Click="IncreaseContentSize_Click">Increase</Button>
        <TextBlock Grid.Row="3" Grid.Column="2" Foreground="White">
            The window is black
        </TextBlock> 
</Grid>
private const double _sizeChangeAmount = 150;

    private void IncreaseContentSize_Click(object sender, RoutedEventArgs e)
    {
        SizeChangeLabel.MinWidth = SizeChangeLabel.ActualWidth + _sizeChangeAmount;
        SizeChangeLabel.MinHeight = SizeChangeLabel.ActualHeight + _sizeChangeAmount;   
    }

    private void ReduceContentSize_Click(object sender, RoutedEventArgs e)
    {
        if (SizeChangeLabel.MinWidth > 150)
            SizeChangeLabel.MinWidth = SizeChangeLabel.ActualWidth - _sizeChangeAmount;

        if (SizeChangeLabel.MinHeight > 150)
            SizeChangeLabel.MinHeight = SizeChangeLabel.ActualHeight - _sizeChangeAmount;
    }


这是一个合理的近似值,有助于找到解决方案吗?

我想在我的问题中提到它,但我已经尝试在任何地方启用SnapsToDevicePixels,但没有任何效果。呃,我尝试编写了一个示例,但它没有捕获问题,因此我必须尝试从“真实”中获取更多信息应用程序来编写一个示例。您能将其固定到特定的单元格内容吗?强制重画(最小化等)是否会消除问题?是否有可能在该点上意外地有一个空的列/行?我发现当其中一个单元格的内容发生变化时会出现问题。这是在一个子类窗口中,您可以设置一个特定单元格的内容。不同大小的内容(拉伸单元格和窗口)会导致出现不同的行。在变大时显示,或者仅在变小时显示?这与我尝试过的近似值非常相似,但通过在所有元素上添加SnapsToDevicePixels=true可以解决此问题(我不确定到底在哪里需要它,所以我把它放在所有东西上,尽管我认为它会慢慢流下来。)我发誓,即使SnapsToDevicePixels打开,我也有问题。有趣的--我将SnapsToDevicePixels放在窗口、网格、所有标签、按钮和文本块上,但我仍然可以看到这些行。您在窗口上使用的与大小相关的属性是什么?(SizeToContent等)。你可以通过在内容-1上添加边距来破解它。但我讨厌这样。:(窗口大小为SizeToContent=“widthandheath”。我会尝试使用边距技术,只是为了好玩。