WPF DataGrid RowDetailsTemplate 鼠标滚动通知到 DataGrid 滚动
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 百度翻译 译