我从班级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
之间的运动?
答案 0 :(得分:0)
我认为使用ColumnHeaderDragStarted将是一个好主意。