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 百度翻译


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM