我创建了一个表,它是产品,然后只给出整数值,即产品ID在linq查询下使用: var Autolist = db.Products.Select(p => p.Pid).Distinct()。ToList(); listbox1.Itemsource =自动列表; 所以,如果我在文本框中输入整数值进行过滤以匹配从列表框中显示的内容,那该怎么办?
答案 0 :(得分:1)
将原始列表保留在单独的列表中。在您的情况下:产品。 创建ObservableCollection of Products(FilteredProducts)并将其绑定到列表中。 绑定TextBox让我们说一个ProductId并将延迟设置为一些milis:
<TextBox Text="{Binding ProductId
Delay=300,
UpdateSourceTrigger=PropertyChanged}" />
一旦设置了值(在设置之前过滤了数字),请清除OnbservableCollection并再次向其添加值。
FilteredProducts.Clear();
foreach(Product p in db.Products.Where(p.Id == ProductId))
{
FilteredProducts.Add(p);
}
请注意:
listbox1.Itemsource=FilteredProducts
请注意,此解决方案适用于小型列表,如果您有大量项目,清除和添加项目将是一个问题。