Проверьте, содержит ли 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 имени на ComboBox cb?

2 ответов


Items является ItemCollection и not list of strings. В вашем случае это 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;
}

Если вы хотите использовать а в cb.Items.Contains("Combo") вы должны добавить строки в свой ComboBox, а не ComboBoxItems:cb.Items.Add("Combo"). Строка будет отображаться так же, как ComboBoxItem.