检查ComboBox是否包含项目

时间:2013-08-10 14:50:54

标签: c# .net wpf xaml combobox

我有这个:

<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}}?

2 个答案:

答案 0 :(得分:14)

项目是ItemCollectionnot 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一样显示。