使用文本框筛选列表框项

本文关键字:列表 筛选 文本 | 更新日期: 2023-09-27 18:05:44

我有一个ListBox,有一些Items,还有一个TextBoxTextBox中的文本应与ListBoxItems的起始字符匹配,并应显示筛选结果。怎么做?谢谢。

使用文本框筛选列表框项

我喜欢乔希的这个例子......

http://joshsmithonwpf.wordpress.com/2007/06/12/searching-for-items-in-a-listbox/#

它与另一个链接的方法类似 - 但这个链接非常出色 - 在使用 WPF 时,剪切优雅是很好的(以及如何以非常简单的方式完成工作(。

这取决于您的实现。您是否遵循 MVVM 模式?

如果是,则可以根据文本框的设置事件筛选列表框。在资源库中,您可以更改列表框的内容。

<TextBox Text="{Binding SearchText}" />
private string _searchText;
public string SearchText
{
    get { return _searchText; }
    set
    {
        _searchText = value;
        // Change contents of list box.
    }
}

如果您没有遵循 MVVM,则需要在文本框上添加更改事件处理程序。选择文本框并在属性窗口中检查其事件。其中有 TextChanged 事件。添加该事件。每当文本框文本发生更改时,这将为您提供一个函数。在该函数中,您可以实现过滤列表框的逻辑。

感谢每个人,但我做了一些更简单的事情。希望有帮助..

声明一个列表:

       List<string> list = new List<string>();

在主窗口中:

      public MainWindow() {
        list.Clear();
        foreach (String str in lb1.Items)
        {
            list.Add(str);
        }
     }

在文本更改事件中:

      public void t1_TextChanged(object sender, TextChangedEventArgs e)
{
        if (String.IsNullOrEmpty(t1.Text.Trim()) == false)
        {
            lb1.Items.Clear();
            foreach (string str in list)
            {
                if (str.StartsWith(t1.Text.Trim()))
                {
                    lb1.Items.Add(str);
                }
            } 
        }
        else if(t1.Text.Trim() == "")
        {
            lb1.Items.Clear();
            foreach (string str in list)
                {
                    lb1.Items.Add(str);
                }
            }                         
        }