如何在wpf c#中禁用数据网格内的滚动

时间:2011-08-08 08:16:29

标签: wpf datagrid wpfdatagrid

我已经完成了VerticalScrollBarVisibility =“已禁用”,因为我不希望查看数据网格内的内容超过指定的高度。在给出上述声明后,我无法看到滚动条。但我仍然可以向下滚动并查看行。有人告诉我如何禁用所有滚动? 感谢

5 个答案:

答案 0 :(得分:8)

正确的方法是禁用命中目标

DataGrid.IsHitTestVisible = false;

答案 1 :(得分:5)

一旦为DatGrid禁用了VerticalScrollBarVisibility,就需要禁用ScrollViewer的滚动功能,如下所示:

ScrollViewer.CanContentScroll="False"

但是当你这样做时,请确保你已经为整个DataGrid和DataGrid行定义了一个标准高度,这样用户就可以看到你希望他们看到的所有行,否则不会显示截断的行并且用户无法向下滚动以查看它们。

希望这有帮助。

答案 2 :(得分:3)

允许DataGrid显示其所有内容(因此无需滚动条):

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <DataGrid x:Name="DataGrid" />
</Grid>

您可以将结果放在任何地方。它会将它的大小减小到所有者的尺寸

答案 3 :(得分:1)

由于我需要行选择,因此接受的解决方案对我不起作用。 我通过禁用数据网格平移(用于鼠标拖动)和处理按键事件(用于键盘)解决了我的所有问题。 在datagrid XAML中:

ScrollViewer.PanningMode="None"

PreviewKeyDown="OnDatagridPreviewKeyDown"

在代码背后:

private void OnDatagridPreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Right || e.Key == Key.Left)
        e.Handled = true;
}

HTH。

编辑:我的回答适用于列,但行的所有内容都相似。

答案 4 :(得分:0)

只是想添加一个应用于列的答案。有时,您可能会发现Datagrid将滚动到您希望保持不可见的额外列,尤其是在专门调整高度以使任何其他列不可见时。我只是将一个Loaded处理程序附加到Datagrid,并将所有其他列设置为宽度为0并使其隐藏。