所以我找到了一种不同的解决方案来处理这种行为。
我已经开始使用这个 stackoverflow 答案在 WPF 中单击并拖动选择框
在 mouseMove 中,修改 selectionBox 大小后,我选择了 selectionBox 区域中的项目。
我这样做:
//Select all visible items in select region.
Rect selectRect = new Rect(Canvas.GetLeft(selectionBox), Canvas.GetTop(selectionBox),
(Canvas.GetLeft(selectionBox) + selectionBox.Width), (Canvas.GetTop(selectionBox) + selectionBox.Height));
RectangleGeometry rr = new RectangleGeometry(selectRect);
foreach (CustomElement elt in mainList.Items)
{
ListViewItem item = mainList.ItemContainerGenerator.ContainerFromItem(elt) as ListViewItem;
Rect r = LayoutInformation.GetLayoutSlot(item);
if (r.IntersectsWith(selectRect))
item.IsSelected = true;
else
item.IsSelected = false;
}
我发现 LayoutInformation 可以为您提供代表对象的 Rect,因此我可以检查它是否与 selectionBox Rect 相交。