如何使用文本框搜索列表框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对象,设置对象的源为字符串数组,然后对对象进行过滤,你可以在过滤函数中过滤元素
我有一个直接分配给列表框的列表。我想使用一个文本框和一个按钮来搜索列表框的内容,所以在输入一个单词后,当用户按下按钮时,它会在所有条目的列表框中显示出来。例如。如果我键入 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对象,设置对象的源为字符串数组,然后对对象进行过滤,你可以在过滤函数中过滤元素