You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# ListView多条件过滤异常:两个过滤器仅一个生效

问题原因

你现在的代码里,view.Filter是一个单一的委托属性,你连续给它赋值两次:先赋值UserFilter,接着又赋值UserFilter_box,后者会直接覆盖前者。所以最终只有最后那个过滤器(UserFilter_box)在工作,第一个过滤器的逻辑完全没被执行。

解决方案

把两个过滤条件合并到同一个过滤器方法里,让两个条件同时生效。修改后的代码如下:

CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(parkingListe.ItemsSource);
view.Filter = CombinedFilter;

// 合并条码和箱号的过滤逻辑
private bool CombinedFilter(object item)
{
    ParkingClass parkingItem = item as ParkingClass;
    if (parkingItem == null) return false;

    // 条码过滤逻辑:输入为空则不限制,否则检查是否包含目标文本
    bool barcodeMatch = string.IsNullOrEmpty(txtFilter.Text) 
        ? true 
        : parkingItem.parking_barcode.IndexOf(txtFilter.Text, StringComparison.OrdinalIgnoreCase) >= 0;

    // 箱号过滤逻辑:规则同条码过滤
    bool boxMatch = string.IsNullOrEmpty(boxFilter.Text) 
        ? true 
        : parkingItem.parking_box.IndexOf(boxFilter.Text, StringComparison.OrdinalIgnoreCase) >= 0;

    // 两个条件都满足才保留该条目(如果需要满足任意一个条件就改成 ||)
    return barcodeMatch && boxMatch;
}

逻辑说明:

  • 先把item转成ParkingClass,避免空引用报错
  • 每个输入框为空时,对应过滤条件自动生效(不对条目做限制)
  • 只有同时满足条码和箱号过滤条件的条目,才会显示在ListView中

内容的提问来源于stack exchange,提问作者M.Nasiri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:20:28