0

我在每列中有一个带有矩形的 WPF 网格。所有列的宽度相同 (1*),所有矩形都有黑色背景。在设计器模式下,矩形(网格列线)之间有细线很好,但我的问题是,这些线在运行时仍然可见:

例子

我的代码是:

<Grid ShowGridLines="False">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <Rectangle Fill="Black" />
    <Rectangle Grid.Column="1" Fill="Black" />
    <Rectangle Grid.Column="2" Fill="Black" />
    <Rectangle Grid.Column="3" Fill="Black" />
    <Rectangle Grid.Column="4" Fill="Black" />
    <Rectangle Grid.Column="5" Fill="Black" />
</Grid>

任何帮助,将不胜感激!

4

2 回答 2

0

这个问题是因为你有一个 6 列的网格,但你的网格的宽度不是 6 像素的精确倍数。这导致每个矩形的宽度是一个小数值。对于每个矩形边缘的像素,WPF 渲染引擎将在黑色矩形和窗口背景之间进行插值,给出灰色条纹。

<Window x:Class="WpfApp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWi ndow"
        SizeToContent="WidthAndHeight"
        UseLayoutRounding="False">
    <Grid ShowGridLines="False"
          Width="701"
          Height="300">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Rectangle Grid.Column="0"
                   Fill="Black" />
        <Rectangle Grid.Column="1"
                   Fill="Black" />
        <Rectangle Grid.Column="2"
                   Fill="Black" />
        <Rectangle Grid.Column="3"
                   Fill="Black" />
        <Rectangle Grid.Column="4"
                   Fill="Black" />
        <Rectangle Grid.Column="5"
                   Fill="Black" />
    </Grid>
</Window>

您可以使用WPF Snoop等工具查看此内容

解决方法是

  • 将网格宽度设置为 6 的精确倍数
  • 将 UseLayoutRounding 设置为 True

后一种选择将导致某些矩形具有不同的宽度(一个像素),但所有矩形都将是整数个像素。

于 2018-10-16T07:59:30.177 回答
0

如果您使用这些值设置 ResourceDictionary 会更容易

<Style
     x:Key="callthiskey"
    TargetType="{x:Type DataGrid}">

    <Setter Property="IsReadOnly" Value="True"/>
    <Setter Property="AutoGenerateColumns" Value="False"/>
    <Setter Property="GridLinesVisibility" Value="None"/>

</Style>

设置资源字典后,您可以像这样从用户控件中调用它

<DataGrid Style="{StaticResource callthiskey}">

这将完全删除您的线路

另一种方法是像这样设置网格的设置

GridLinesVisibility="none"
于 2020-04-14T19:09:50.557 回答