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