通过指定鼠标画定的区域,获取ListBox属于该区域的Item,用于区域选中

这个方法定义了一个公共静态函数,用于在ListBox中通过指定的矩形区域获取对应的ListBoxItem。它使用了GeometryHitTestParameters进行碰撞检测,结合HitTestResultCallback和HitTestFilterCallback回调,筛选出位于区域内的ListBoxItem并将其内容添加到列表中返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值