为什么WPF DataGrid的垂直滚动太大?

时间:2012-07-02 19:21:09

标签: c# .net wpf datagrid

我有一个带滚动和虚拟化的数据网格。其他一切都很好,除了有可能额外的1-23像素滚动到底部:

enter image description here

我有一个数据网格,右边有一个自定义样式的滚动条,然后我在底部有一个分割器,问题是分割器和网格之间有空的空间,这本身就很好(因为你可以调整大小分离器并有更多的空白空间),但滚动条现在比它需要的大,这会导致其他地方出现问题。如何确保滚动条完全“与内容一样高”。

我不希望它滚动到空白的地方,因为我在其他地方的代码读取滚动位置并乘以行高来确定我们所处的位置,并且一旦超过可滚动区域就会出现错误。

数据网格如下:

<DataGrid CanUserSortColumns="False"
          CanUserAddRows="False"
          CanUserDeleteRows="False"
          CanUserResizeColumns="True"
          CanUserReorderColumns="True"
          SelectionUnit="FullRow"
          ScrollViewer.CanContentScroll="True"
          SelectionMode="Single"
          HeadersVisibility="Column"
          VirtualizingPanel.IsVirtualizing="True"
          VirtualizingPanel.VirtualizationMode="Recycling"
          AutoGenerateColumns="False" />

更新:我想我知道原因。因为我使用虚拟化,它会滚动一行(而不是按像素),因此它不允许我滚动,以便行部分可见。它总是按行的高度滚动(在我的情况下是24个单位)。现在,如果我移动网格分割器并使最后一行仅部分可见,它会正确显示滚动条,但问题是它将滚动24个单位,从而在底部显示空白区域。

意识到这一点,我不太确定这个问题是否可以解决。我只需要编辑其他地方的代码,以确定是否有超出滚动,如果是,我将“裁剪并忽略”最后1-23个单位的滚动。

1 个答案:

答案 0 :(得分:0)

请在您的DataGrid上使用属性ScrollViewer.VerticalScrollBarVisibility =“Auto”

有关此媒体资源的更多信息,请转至http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.verticalscrollbarvisibility.aspx