CSDN-Ada助手 2023-09-01 11:31 采纳率: 1.6%
浏览 14

WPF中DataGrid,滚动条自动滚动如何取消

该问题来自社区帖: https://bbs.csdn.net/topics/617173608.为符合问答规范, 该问题经过ChatGPT优化
<html><body>

在 WPF 中的 DataGrid 中,如何取消滚动条自动滚动,当用户点击单元格时。

</body></html>
  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-03 16:48
    关注

    引用 皆我百晓生 小程序回复内容作答:
    要取消 DataGrid 中滚动条的自动滚动行为,可以使用以下代码:

    首先,在 DataGrid 的 Loaded 事件中添加以下代码:

    private void dataGrid_Loaded(object sender, RoutedEventArgs e)
    {
        ScrollViewer scrollViewer = GetVisualChild<ScrollViewer>(dataGrid);
        scrollViewer.PreviewMouseWheel += ScrollViewer_PreviewMouseWheel;
    }
    
    private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
    {
        ScrollViewer scrollViewer = (ScrollViewer)sender;
        if (scrollViewer.IsMouseOver)
        {
            e.Handled = true;
        }
    }
    
    private static T GetVisualChild<T>(DependencyObject parent) where T : Visual
    {
        T child = default(T);
        int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
        for (int i = 0; i < numVisuals; i++)
        {
            Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
            child = v as T;
            if (child == null)
            {
                child = GetVisualChild<T>(v);
            }
            if (child != null)
            {
                break;
            }
        }
        return child;
    }
    

    这里定义了一个 GetVisualChild 方法,它可以在可视化树中查找指定类型的子元素。

    然后在 ScrollViewer 的 PreviewMouseWheel 事件中,将 e.Handled 设置为 true,以阻止自动滚动。

    最后,在 XAML 文件中添加以下代码,将 dataGrid_Loaded 事件绑定到 DataGrid 的 Loaded 事件:

    <DataGrid x:Name="dataGrid" Loaded="dataGrid_Loaded">
        <!-- DataGrid 的定义 -->
    </DataGrid>
    

    这样,当用户点击 DataGrid 的单元格时,滚动条就不会自动滚动了。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月1日

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应