WPF DataGridColumnHeader MouseEnter不触发

时间:2020-06-26 10:38:43

标签: c# wpf

我从班级there are -3.5 horses 派生了以下与订阅有关的事件:

DataGrid

一切正常,但是在按下鼠标按钮时未执行private void SubscribeHeaders(DependencyObject sender = null) { sender = sender ?? this; for (int childIndex = 0; childIndex < VisualTreeHelper.GetChildrenCount(sender); childIndex++) { DependencyObject child = VisualTreeHelper.GetChild(sender, childIndex); if (child is DataGridColumnHeader colHeader) { //Subscribe column headers colHeader.PreviewMouseLeftButtonDown += (obj, e) => OnColumnHeaderMouseDown(obj, e); colHeader.PreviewMouseLeftButtonUp += (obj, e) => OnColumnHeaderMouseUp(obj, e); colHeader.MouseEnter += (obj, e) => OnColumnHeaderMouseEnter(obj, e); colHeader.MouseLeave += (obj, e) => OnColumnHeaderMouseLeave(obj, e); } else if (child is DataGridRowHeader rowHeader) { //Subscribe row headers } else { SubscribeHeaders(child); } } } 。这篇文章(WPF Mousedown => No MouseLeave Event)讲述了鼠标捕获的问题,但是这一段

OnColumnHeaderMouseEnter(obj, e)

不做任何更改,因为if (Mouse.Captured != null) Mouse.Captured.ReleaseMouseCapture(); 始终为空。

我要达到的目的是通过从选择的开始到结束用鼠标左键拖动鼠标来选择Mouse.Captured列的范围。我的想法是对鼠标按钮和标题之间的移动做出反应。

如何通过按下鼠标按钮来捕获DataGrid之间的运动?

1 个答案:

答案 0 :(得分:0)

我认为使用ColumnHeaderDragStarted将是一个好主意。

相关问题