前面效果中基于ListBox实现了一点不一样的效果;今天再次在原来的基础上完善框选ListBox;最终实现的效果点击下方链接查看:
f553ca6ee2491687108cde4d571d7f26_哔哩哔哩_bilibili
进度条,百分之95
1、使用了VisualTreeHelper的HitTest方法:
Point point2 = e.GetPosition(LedListBox);
Rect rect = new Rect(origContentMouseDownPoint, point2);
RectangleGeometry rectangleGeometry = new RectangleGeometry(rect);
VisualTreeHelper.HitTest(LedListBox, new HitTestFilterCallback(OnHitTestFilterCallback), new HitTestResultCallback(OnHitTestResultCallback), new GeometryHitTestParameters(rectangleGeometry));
2、关于OnHitTestFilterCallback:
private HitTestFilterBehavior OnHitTestFilterCallback(DependencyObject target)
{
UIElement element = target as UIElement;
if(element != null)
{
var img = element as CheckBox;
if(img != null && img.IsVisible == true)
{
img.IsChecked = true;
return HitTestFilterBehavior.Continue;
}
}
return HitTestFilterBehavior.Continue;
}
最终简单的效果先这样吧,以后有时间的话,可以再去摸索一下更复杂的效果吧;