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