WPF DataGrid全行选择

mad*_*ger 12 wpf datagrid listview selection

我正在使用WPF和.NET 4.0.最近在我的一个程序中,我使用ListView和GridView切换到DataGrid.

我希望能够像在ListView中一样选择并突出显示整行.

在ListView中,当我单击最后一列的空白区域时,我仍然可以选择该行.整行都突出显示,不仅是细胞.

但是,在DataGrid中,在设置SelectionMode ="Single"和SelectionUnit ="FullRow"之后,只有当我单击其中的任何单元格而不是在最后一列的空白区域中时,才能选择该行.

如何在此处使用ListView中的突出显示行为?

Moh*_*dil 9

有两种解决方案:

  1. 将DataGrid中最后一列的宽度设置为Width ="*".
  2. 第二种解决方案是解决方法.在最后一个列之后添加额外的空列(即既未设置其Header也未设置Binding属性)并将其宽度设置为Width ="*"

我个人更喜欢第一种解决方案,它比第二种解决方案更干净.

  • 将最后一列设置为"Width ="*"`时要注意:如果需要,水平滚动条将不再可见. (2认同)
  • @Metro Smurf:解决方法是为每列设置一个可行的 MinWidth,此外,您可以为每列设置一个工具提示,以在其值大于可用宽度时显示内容。 (2认同)
  • @Metro Smurf:是的,我完全同意你的观点,但是你可以通过使用工具提示来缓解这个问题,而且我认为最好使用滚动条。使用工具提示,如果用户想要查看单元格内容的隐藏部分,他只需将鼠标悬停在其上即可,另一方面,使用滚动条,用户必须一直拖动滚动条才能看到单元格内容的隐藏部分。单元格内容的隐藏部分甚至整个隐藏列。 (2认同)
  • @Metro Smurf:这是一个权衡。在我看来,如果您有合理数量的列(不是太多),最好不要使用滚动条,但有时您被迫显示大量列,在这种情况下最好使用滚动条 - bar 按顺序使所有列具有合理的宽度,在这种情况下,最后一列后面不会出现空白区域。 (2认同)