如何在没有循环的情况下按给定字符串选择列表框中的字符串条目?

时间:2012-10-24 19:10:41

标签: c# wpf listbox

在WPF中没有listbox.findString。

3 个答案:

答案 0 :(得分:3)

var entries = listBox.Items.Where(item => item.ToString() == "something");

答案 1 :(得分:3)

假设我们有一个列表框:

ListBox b = new ListBox();

然后你可以使用LINQ:

        int index = b.Items.IndexOf((
            from ListBoxItem a in b.Items
            where a.Content.ToString() == "something"
            select a).First());

或者您可以使用foreach:

        foreach (ListBoxItem lbi in b.Items)
        {
            if (lbi.Content is string && (string)lbi.Content == "something")
            {
                index = b.Items.IndexOf(lbi);
                break;
            }
        }

答案 2 :(得分:0)

在大多数情况下,您希望将ListBox的ItemsSource绑定到实现IEnumerable的代码中的实际集合,然后使用.Where()。First()语句查找字符串的第一个出现,如下所示: / p>

List<string> lstb = new List<string>() { "StringA", "StringB", "StringC" };
string stringC = lstb.Where(s => s == "StringC").First();

然后,如果您想以编程方式选择列表中的项目:

yourListBox.SelectedItem = stringC;

但是我强烈建议您花时间学习数据绑定和MVVM模型,它可以简化与WPF控件的交互。