2

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

在此处输入图像描述

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

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

数据网格如下所示:

<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 个滚动单位。

4

1 回答 1

0

请在 DataGrid 上使用属性 ScrollViewer.VerticalScrollBarVisibility="Auto"

有关此属性的更多信息,请访问http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.verticalscrollbarvisibility.aspx

于 2012-07-02T19:27:29.177 回答