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

问题描述:

首先,标题可能不是很好。WPF DataGrid:如何在填充列中留出一些额外的空间以避免滚动条出现

我使用WPF 4 DataGrid很多。我想要的一个功能是将鼠标放在行上。我第一次尝试使用上的Trigger更改背景颜色。但是,与只读数据网格单元存在冲突,请参阅我的其他帖子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”(为了使其无边框在右边),滚动条仍然显示出来。

您可以尝试减少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> 

两个警告,因为我给了值:右侧边界线不出现,无论你设定的保证金,尽管这可能即使没有保证金二传手是真实的。当触发器激活你的“最后”或“最后”行时,列标题会移动(在这种情况下,它们都会向右移动一点)。

+0

这是一个好主意。谢谢! – newman 2011-05-26 20:19:44