检查ComboBox是否包含项目

Elm*_*lmo 10 .net c# wpf xaml combobox

我有这个:

<ComboBox SelectedValuePath="Content" x:Name="cb">
  <ComboBoxItem>Combo</ComboBoxItem>
  <ComboBoxItem>Box</ComboBoxItem>
  <ComboBoxItem>Item</ComboBoxItem>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

如果我使用

cb.Items.Contains("Combo")
Run Code Online (Sandbox Code Playgroud)

要么

cb.Items.Contains(new ComboBoxItem {Content = "Combo"})
Run Code Online (Sandbox Code Playgroud)

它返回False.

任何人都可以告诉我如何检查是否存在ComboBoxItem名称?ComboComboBox cb

Roh*_*ats 14

物品是ItemCollectionnot list of strings.在你的情况下它是a collection of ComboboxItem,你需要检查其Content财产.

cb.Items.Cast<ComboBoxItem>().Any(cbi => cbi.Content.Equals("Combo"));
Run Code Online (Sandbox Code Playgroud)

要么

cb.Items.OfType<ComboBoxItem>().Any(cbi => cbi.Content.Equals("Combo"));
Run Code Online (Sandbox Code Playgroud)

你可以循环每个项目并打破,以防你找到所需的项目 -

bool itemExists = false;
foreach (ComboBoxItem cbi in cb.Items)
{
    itemExists = cbi.Content.Equals("Combo");
    if (itemExists) break;
}
Run Code Online (Sandbox Code Playgroud)


Min*_*gar 5

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