WPF DataGrid RowDetailsTemplate 鼠标滚动通知到 DataGrid 滚动

前言:上次做了数据驱动UI虽然已经实现,但是在明细中鼠标滚动并不能带动外部 DataGrid 滚动条滚动,上文地址  https://www.cnblogs.com/luguangguang/p/14925663.html#4895983

如图所示

 

首先,我想到的是如果按照 冒泡路由事件 ,那么直接滚动明细表的话,应该也会通知到 DataGrid 的滚动条,但为什么事实不是这样呢。

这里我在明细中添加 MouseWheel 事件

 

 

然而运行之后,发现该事件并没有捕捉到。

联想到最常见的 MouseDwon 事件不触发的官方说明文档

 

一般来说,MouseDown 通常会被 Click 事件直接标记为已执行。同理,MouseWheel 也应该是在 DataGrid 中被其他元素的事件标记处理了,这里就不做更深入探索了。

 

 

 

知道了问题所在,那么解决问题的方法也就很简单了。

思路如下,采用明细的隧道事件来通知到DataGird的鼠标滚动事件。

 

滚动隧道事件代码如下

1    private void DataGrid_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
2         {
3             var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
4             eventArg.RoutedEvent = UIElement.MouseWheelEvent;
5             eventArg.Source = sender;
6             (sender as DataGrid).RaiseEvent(eventArg);
7         }

UI的部分代码如下

 

 

 

 

来看最终效果

 

 

 实现了最初的构想。

 

 

翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 百度翻译

posted on   鲁广广  阅读(995)  评论(1编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示