10

我有这个:

<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 cb

4

2 回答 2

16

项目是一个ItemCollectionnot list of strings。在您的情况下,它是 a collection of ComboboxItem,您需要检查它的Content属性。

cb.Items.Cast<ComboBoxItem>().Any(cbi => cbi.Content.Equals("Combo"));

或者

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;
}
于 2013-08-10T15:00:45.367 回答
5

如果您想使用该Contains功能,cb.Items.Contains("Combo")则必须将字符串添加到您的 ComboBox,而不是 ComboBoxItems: cb.Items.Add("Combo")。该字符串将像 ComboBoxItem 一样显示。

于 2013-08-10T19:55:51.543 回答