public static List<T> GetItemAt<T>(this ListBox listbox, Rect areaOfInterest)
{
var list = new List<T>();
var rect = new RectangleGeometry(areaOfInterest);
var hitTestParams = new GeometryHitTestParameters(rect);
var resultCallback = new HitTestResultCallback(x => HitTestResultBehavior.Continue);
var filterCallback = new HitTestFilterCallback(x =>
{
if (x is ListBoxItem)
{
var item = (T)((ListBoxItem)x).Content;
list.Add(item);
}
return HitTestFilterBehavior.Continue;
});
VisualTreeHelper.HitTest(listbox, filterCallback, resultCallback, hitTestParams);
return list;
} 通过指定鼠标画定的区域,获取ListBox属于该区域的Item,用于区域选中
最新推荐文章于 2023-09-28 08:44:03 发布
这个方法定义了一个公共静态函数,用于在ListBox中通过指定的矩形区域获取对应的ListBoxItem。它使用了GeometryHitTestParameters进行碰撞检测,结合HitTestResultCallback和HitTestFilterCallback回调,筛选出位于区域内的ListBoxItem并将其内容添加到列表中返回。
878

被折叠的 条评论
为什么被折叠?



