我有一个ListBox
with someItems
和一个TextBox
. in 中的文本应与in &TextBox
的起始字符匹配,应显示过滤结果。这个怎么做?谢谢。Items
ListBox
问问题
12991 次
3 回答
2
我喜欢乔什的这个例子......
http://joshsmithonwpf.wordpress.com/2007/06/12/searching-for-items-in-a-listbox/#
它与另一个链接的方法类似——但这个链接非常棒——在使用 WPF 时要牢记剪切优雅(以及如何以非常简单的方式完成工作)。
于 2013-03-26T02:32:11.530 回答
1
谢谢大家,但我做了一些更简单的事情..希望有帮助..
声明一个列表:
List<string> list = new List<string>();
在主窗口中:
public MainWindow() {
list.Clear();
foreach (String str in lb1.Items)
{
list.Add(str);
}
}
在 textchanged 事件中:
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);
}
}
}
于 2013-03-27T04:16:18.587 回答
1
这取决于您的实施。您是否遵循 MVVM 模式?
如果是,那么您可以根据文本框的 set 事件过滤列表框。在设置器中,您可以更改列表框的内容。
<TextBox Text="{Binding SearchText}" />
private string _searchText;
public string SearchText
{
get { return _searchText; }
set
{
_searchText = value;
// Change contents of list box.
}
}
如果你没有关注 MVVM,那么你需要在文本框上添加一个更改事件处理程序。选择 TextBox 并在属性窗口中检查其事件。其中有 TextChanged 事件。添加该事件。每当更改文本框文本时,这将为您提供一个功能。在该函数中,您可以实现过滤列表框的逻辑。
于 2013-03-26T06:01:16.383 回答