在WPF列表框C#中搜索字符串并选择行

时间:2017-04-30 08:41:04

标签: c# wpf xaml listbox

在Windows窗体应用程序中的

我这样做是为了找到字符串并选择行

            listBoxGCode.SelectedItems.Clear();
            int index = listBoxGCode.FindString(N + e.Value.ToString());              
            if (index != -1)
            {
                listBoxGCode.SetSelected(index, true);

            }

在WPF我无法让它工作,我已经尝试过这个

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

当我运行此代码时,我收到此消息窗口

无法将“system.string”的对象强制转换为“system.windows.controls.listboxitem”

我需要在.xaml代码中添加任何代码吗?

1 个答案:

答案 0 :(得分:0)

您可能直接在Items的{​​{1}}集合中添加了字符串,因此此表达式中每个项目的类型实际上是字符串,而不是ListBox,这就是您的原因所在得到ListBoxItem

InvalidCastException

要解决此问题,请将每个字符串包装到XAML中的from ListBoxItem a in listBoxGCode.Items

ListBoxItem

如果你想在后面的代码中执行此操作,你可以这样做

<ListBox x:Name="listBoxGCode">
    <ListBox.Items>
        <ListBoxItem>a</ListBoxItem>
        <ListBoxItem>b</ListBoxItem>
        <ListBoxItem>c</ListBoxItem>
    </ListBox.Items>
</ListBox>