我正在使用WPF DataGrid并将其设置为在用户修改的任何行周围放置一个红色边框。它运行良好,但是当边框出现时,该行内的所有单元格都会被推过一两个像素。换句话说,单元格的左右边框不再与其上方或下方的边界对齐,因此看起来很奇怪。
这是我用来使红色边框出现OnEdit的代码(注意:IsDirty是绑定对象上的一个属性,当值被修改时设置):
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding IsDirty}" Value="true">
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="BorderThickness" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
我可以添加什么以便修改红色边框边距,以免干扰单元格的边框?
由于
答案 0 :(得分:3)
一种方法是将边框应用于每一行而不是脏一行,但将边框设置为透明,并将边框设置为红色,以实际显示为脏的行
像
这样的东西<Style TargetType="DataGridRow">
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="BorderThickness" Value="1" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsDirty}" Value="true">
<Setter Property="BorderBrush" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
答案 1 :(得分:2)
Visual Tree看起来像这样
当您更改BorderThickness
的{{1}}时,您可以通过同时向Border
添加否定Margin.Left
来补偿此问题。不是最漂亮的解决方案,但它有效
DataGridCellsPresenter