WPF DataGrid RowDetailsTemplate 滑鼠滾動通知到 DataGrid 滾動

前言:上次做了數據驅動UI雖然已經實現,但是在明細中滑鼠滾動並不能帶動外部 DataGrid 滾動條滾動,上文地址  //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 百度翻譯

Tags: