我有这个:
<ComboBox SelectedValuePath="Content" x:Name="cb">
<ComboBoxItem>Combo</ComboBoxItem>
<ComboBoxItem>Box</ComboBoxItem>
<ComboBoxItem>Item</ComboBoxItem>
</ComboBox>
如果我使用
cb.Items.Contains("Combo")
或
cb.Items.Contains(new ComboBoxItem {Content = "Combo"})
返回False
。
有人可以告诉我如何检查ComboBoxItem
Combo
中是否存在名为ComboBox
的{{1}}?
答案 0 :(得分:14)
项目是ItemCollection
和not list of strings
。在您的情况下,它是collection of ComboboxItem
,您需要检查其Content
属性。
cb.Items.Cast<ComboBoxItem>().Any(cbi => cbi.Content.Equals("Combo"));
OR
cb.Items.OfType<ComboBoxItem>().Any(cbi => cbi.Content.Equals("Combo"));
您可以遍历每个项目并在您找到所需项目时中断 -
bool itemExists = false;
foreach (ComboBoxItem cbi in cb.Items)
{
itemExists = cbi.Content.Equals("Combo");
if (itemExists) break;
}
答案 1 :(得分:3)
如果要使用Contains
中的cb.Items.Contains("Combo")
函数,则必须在ComboBox中添加字符串,而不是ComboBoxItems:cb.Items.Add("Combo")
。字符串将像ComboBoxItem一样显示。