我这样做是为了找到字符串并选择行
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代码中添加任何代码吗?
答案 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>