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

时间:2019-05-07 21:42:15

标签: c# wpf search listbox

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

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

Messages.ItemSource = messages;

到目前为止我有

private void button_Click(object sender, EventArgs e)
{

}

但是我不知道在按钮内放什么

2 个答案:

答案 0 :(得分:0)

您将要遍历消息的条目(将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事件中,以便在您键入时进行更新。

答案 1 :(得分:0)

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