Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在wpf c中禁用数据网格内的滚动#_Wpf_Datagrid_Wpfdatagrid - Fatal编程技术网

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

如何在wpf c中禁用数据网格内的滚动#,wpf,datagrid,wpfdatagrid,Wpf,Datagrid,Wpfdatagrid,我已经完成了VerticalScrollBarVisibility=“Disabled”,因为我不希望看到datagrid中跨越指定高度的内容。在给出上述语句后,我无法看到滚动条。但我仍然可以向下滚动并查看行。有人能告诉我如何禁用所有滚动吗? 谢谢一旦您为DatGrid禁用了垂直滚动条可见性,您需要禁用ScrollViewer的滚动功能,如下所示: ScrollViewer.CanContentScroll=“False” 但是,在执行此操作时,请确保已经为整个DataGrid和DataGrid

我已经完成了VerticalScrollBarVisibility=“Disabled”,因为我不希望看到datagrid中跨越指定高度的内容。在给出上述语句后,我无法看到滚动条。但我仍然可以向下滚动并查看行。有人能告诉我如何禁用所有滚动吗?
谢谢

一旦您为DatGrid禁用了
垂直滚动条可见性
,您需要禁用ScrollViewer的滚动功能,如下所示:

ScrollViewer.CanContentScroll=“False”

但是,在执行此操作时,请确保已经为整个DataGrid和DataGrid行定义了标准高度,以便用户可以看到您希望他们看到的所有行,否则将不会显示截断的行,并且用户无法向下滚动查看它们


希望这有帮助。

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



你可以把结果放在任何地方。它将把它的大小缩小到所有者的尺寸

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

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

DataGrid.IsHitTestVisible = false;

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

ScrollViewer.PanningMode="None"
以及:

在代码隐藏中:

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


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

这可以工作,但无法解决问题,如果您希望能够在数据网格中实际单击(只是忽略其中的鼠标滚动),它还将禁用对行的单击
PreviewKeyDown="OnDatagridPreviewKeyDown"
private void OnDatagridPreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Right || e.Key == Key.Left)
        e.Handled = true;
}