如何使用文本框搜索列表框wpf

How to use text box to search listbox wpf

我有一个直接分配给列表框的列表。我想使用一个文本框和一个按钮来搜索列表框的内容,所以在输入一个单词后,当用户按下按钮时,它会在所有条目的列表框中显示出来。例如。如果我键入 apple 并按回车键,列表框应显示包含 apple 一词的条目。

我已使用以下方法将列表分配给列表框:

Messages.ItemSource = messages;

到目前为止我有

private void button_Click(object sender, EventArgs e)
{

}

但是不知道在按钮里面放什么

您将要遍历消息的条目,这是您将 ItemSource 设置为的内容,并根据当前消息检查每个条目。您可以使用 Linq Where 方法来完成此操作。然后,一旦您挑选出包含所选单词的所有消息,就可以将 ItemSource 设置为找到的单词列表。这是一个示例。

public List<string> messages = new List<string>() { "Apple", "Apple Pie", "Apple Jam", "Orange", "Banana" };

public void button_Click(object sender, EventArgs e)
{
    var foundList = messages.Where(m => m.Contains(textBox.Text)).ToList();        
    Messages.ItemsSource = foundList;
}

我现在无法访问 visual studio,所以我没有测试过,但应该是这样的。您应该能够将该代码实际添加到 TextBoxChanged 事件,以便它在您键入时更新。

你可以将项目源设置为一个CollectionViewSource对象,设置对象的源为字符串数组,然后对对象进行过滤,你可以在过滤函数中过滤元素