web-dev-qa-db-ja.com

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という名前のComboComboBoxcbに存在するかどうかを確認する方法を教えてもらえますか?

10
Elmo

アイテムは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;
}
14
Rohit Vats

cb.Items.Contains("Combo")のようにContains関数を使用する場合は、ComboBoxItemsではなくComboBoxに文字列を追加する必要があります:cb.Items.Add("Combo")。文字列はComboBoxItemのように表示されます。

3
Ming Slogar