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