完全删除 WPF 中的网格线
Completely remove Grid lines in WPF
我有一个 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>
如有任何帮助,我们将不胜感激!
此问题是因为您有一个包含 6 列的网格,但网格的宽度不是 6 像素的精确倍数。这导致每个矩形的宽度是一个分数值。对于每个矩形边缘的像素,WPF 渲染引擎将在黑色矩形和 window 背景之间进行插值,给出灰色条纹。
<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
后一个选项将导致一些矩形具有不同的宽度(一个像素),但所有的像素都是整数。
如果您使用这些值设置 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"
我有一个 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>
如有任何帮助,我们将不胜感激!
此问题是因为您有一个包含 6 列的网格,但网格的宽度不是 6 像素的精确倍数。这导致每个矩形的宽度是一个分数值。对于每个矩形边缘的像素,WPF 渲染引擎将在黑色矩形和 window 背景之间进行插值,给出灰色条纹。
<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
后一个选项将导致一些矩形具有不同的宽度(一个像素),但所有的像素都是整数。
如果您使用这些值设置 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"