XAML 检查组合框是否包含项

kmbjn2e3  于 2023-08-01  发布在  其他
关注(0)|答案(3)|浏览(158)

我有这个:

<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
有谁能告诉我如何检查ComboBoxcb中是否存在名为ComboComboBoxItem

zxlwwiss

zxlwwiss1#

项目为ItemCollectionnot 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;
}

r7xajy2e

r7xajy2e2#

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

gev0vcfq

gev0vcfq3#

在C# Winform应用程序中,您可以执行以下操作:

//创建一个类似下面的函数

internal static bool CheckCombo(ComboBox.ObjectCollection items, string Search)
{
    bool isFound = false;
    foreach (var item in items)
    {
        if (item.Equals(Search))
        {
            isFound = true; break;
        }
    }
    return isFound;
}

字符串
在向组合框中添加项目时,可以像这样调用该函数

if (!Functions.CheckCombo(Combobox.Items, "ValueToSearch"))
{
  //Adding the value if is not found in the combobox
  Combobox.Items.Add("ValueToSearch");
}

相关问题