WPF DataGrid:如何使用填充列留出一些额外的空间以避免滚动条显示

时间:2011-05-26 18:00:46

标签: wpf datagrid styles

首先,标题可能不是很好。

我正在使用WPF 4 DataGrid。我想要的一个功能是突出鼠标在行上。我的第一次尝试是使用Trigger上的DataGridRow更改背景颜色。但是,与只读数据网格单元格存在冲突,请参阅我的其他帖子here。现在,我能做的下一个最好的事情就是在鼠标上添加边框。这可以通过这种风格轻松完成:

<Style TargetType="DataGridRow">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>

问题是某些DataGrid具有星号大小的列,并且它通常不会显示水平滚动条。但是,使用此样式Trigger,因为它添加了一个单位边框,当鼠标悬停在网格上时,滚动条变为可见。如果我能让星柱稍微小一些,我认为可以解决它。可能吗?或者你还有其他想法吗?

编辑:即使我将边框粗细的值更改为“1 1 0 1”(以使其在右边无边框),滚动条仍会显示。

1 个答案:

答案 0 :(得分:2)

您可以尝试减少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,0,-2,0"/>
        </Trigger>
    </Style.Triggers>
</Style>

我给出的值有两个警告:无论你设置的边距是什么,右侧边界线都不会出现,尽管即使没有边距设定器也可能是这样。当触发器激活“最后”或“底部”行时,列标题会移位(在这种情况下,它们都会向右移动一点)。