WPF DataGrid:如何在填充列中保留一些额外的空间,以避免滚动条出现

问题描述

| 首先,标题可能不是一个标题。 我经常使用WPF 4
DataGrid
。我想拥有的一项功能是在行上方突出显示鼠标。我的第一个尝试是在
DataGridRow
上使用
Trigger
更改背景颜色。但是,与只读datagrid单元存在冲突,请参阅此处的其他文章。现在,我能做的第二件事就是在鼠标上方添加边框。可以使用以下样式轻松完成此操作:
<Style targettype=\"DataGridRow\">
    <Style.Triggers>
        <Trigger Property=\"IsMouSEOver\" Value=\"True\">
            <Setter Property=\"BorderThickness\" Value=\"1\"/>
            <Setter Property=\"BorderBrush\" Value=\"Red\"/>
        </Trigger>
    </Style.Triggers>
</Style>
问题在于某些“ 0”具有星号列,并且通常不显示水平滚动条。但是,使用这种样式
Trigger
,因为它添加一个单位边框,所以当鼠标悬停在网格上方时,滚动条变为可见。我以为如果将星形柱缩小一些可以解决。可能吗?还是您还有其他想法? 编辑:即使我将边框厚度的值更改为\“ 1 1 0 1 \”(以便使其在右侧变为无边框),滚动条仍会显示。     

解决方法

您可以尝试减少DataGridRow的边距。
<Style TargetType=\"DataGridRow\">
    <Style.Triggers>
        <Trigger Property=\"IsMouseOver\" Value=\"True\">
            <Setter Property=\"BorderThickness\" Value=\"1\"/>
            <Setter Property=\"BorderBrush\" Value=\"Red\"/>
            <Setter Property=\"Margin\" Value=\"0,-2,0\"/>
        </Trigger>
    </Style.Triggers>
</Style>
我给出的值有两个警告:无论您将边距设置为什么,都不会出现右侧边界线,尽管即使没有边距设置器也可能是正确的。当触发器为您的\“ last \”或\“ bottom \”行激活时,列标题将移动(在这种情况下,它们都向右移动一点)。