我有以下问题。我有一个WPF
绑定到ObservableCollection
. 现在我想用全文字符串过滤框中的项目。
我通过在 上运行 linq 查询ObservableCollection
并将列表绑定到查询结果来做到这一点。它通常有效,但有些行为我无法解释。
列表的示例条目: CMSRC_XXX_ADDR、CMDST_XXX_ADDR、TXDAT_DMA_ST_ADDR、...
有效的搜索查询: ADDR、XXX、XX、ADD、CM
无效的搜索查询: CMS、CMSR、...
当我键入CM
时,它仍然显示CMSRC_XXX_ADDR
条目。当我进入时CMS
不再CMSRC_XXX_ADDR
显示。
有人知道为什么吗?我希望我的问题很清楚。谢谢您的帮助。
问候多米尼克
string txtOrig = text;
string lower = txtOrig.ToLower();
string normalize = txtOrig.Normalize();
var bitfieldsfiltered = from bit in bitfields
let name = bit.name_
where
name.ToLower().StartsWith(lower)
|| name.StartsWith(txtOrig)
|| name.Normalize().StartsWith(normalize)
|| name.ToLower().Contains(lower)
|| name.Contains(txtOrig)
|| name.Normalize().Contains(normalize)
|| name.ToLower().EndsWith(lower)
|| name.EndsWith(txtOrig)
|| name.Normalize().EndsWith(normalize)
|| name.ToLower().Equals(lower)
|| name.Equals(txtOrig)
|| name.Normalize().Equals(normalize)
select bit;
list_box.ItemsSource = bitfields;
更新:错误不存在。标签中的数据不是列表框中的数据。由于 RecognizesAccessKey,缺少下划线。