【发布时间】:2018-04-12 06:30:51
【问题描述】:
我想在 DataGrid 中显示我的数据。 我为它写了我的风格,就在这里
<Style TargetType="DataGridColumnHeader">
<Setter Property="FontSize" Value="20"/>
<Setter Property="Background" Value="DarkGreen" />
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderThickness" Value="0,0,0,1"/>
<Setter Property="BorderBrush" Value="ForestGreen"/>
<Setter Property="Height" Value="80"/>
<Setter Property="Padding" Value="5,0,0,0"/>
</Style>
<Style TargetType="DataGridRow">
<Setter Property="FontSize" Value="18"/>
<Setter Property="Background" Value="White"/>
<Setter Property="Margin" Value="0,6,0,0"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="Foreground" Value="DarkGreen"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="Foreground" Value="DarkGreen"/>
<Setter Property="BorderBrush" Value="ForestGreen"/>
<Setter Property="BorderThickness" Value="1"/>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="DataGridCell">
<Setter Property="Height" Value="80"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Focusable" Value="False"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="Foreground" Value="DarkGreen"/>
<Setter Property="BorderThickness" Value="0"/>
</Trigger>
</Style.Triggers>
</Style>
当我选择行时,边框显示向上,但行的宽度变得大于 DataGrid 的宽度 -> 我看不到边框的右侧部分和水平滚动条显示向上。
那么问题来了:如何增加行的边框厚度,但不增加行的宽度和高度?
UPD 选择前:
选择后:
【问题讨论】:
-
你能在点击之前和之后发布截图吗?当边框厚度为 1 时。控件将重绘,因为边框需要占用其所需的空间/像素(因此调整行的大小)。一种替代方法是仅更改颜色(边框厚度始终为 1)并稍微调整窗口大小以适应这 1 个额外像素。
-
@PrateekShrivastava 我通过添加所需图片来更新我的问题。如果我从一开始就使用borderThincknes 设置行的样式,则该行在开始时就比数据网格大,并且我有水平滚动条
-
正如预期的那样 - BorderThickness 更改导致宽度略有增加(因此出现滚动条)。要么保持你的视图/窗口大小 1 像素宽以适应这一点。或者在触发器中使用边框颜色变化而不是边框厚度来获得视觉效果
-
@PrateekShrivastava 有没有办法在数据网格中保持行的大小?这个dataGrid在网格中,所有的大小都是动态变化的。所以,我希望我的行不要用边框调整自己的大小
-
你在 datagridrow 中有一个边距。随着边框厚度的增加,将其设置得较低。