从字符串名称中选择Silverlight组合框选择的项目

时间:2010-10-18 16:38:19

标签: c# silverlight

我正在尝试从字符串中设置我的silverlight组合框中的所选项目。

在这个例子中,假设我有一个名为“MyComboBox”的组合框,如下所示:

<ComboBox Height="23" x:Name="MyComboBox" Width="200" HorizontalAlignment="Left">
    <ComboBoxItem Tag="0" Content="Pizza" IsSelected="True"/>
    <ComboBoxItem Tag="1" Content="Soda"/>
    <ComboBoxItem Tag="2" Content="Wings"/>
    <ComboBoxItem Tag="3" Content="Bread Sticks"/>
</ComboBox>

我从列表中随机选择一个字符串值来模拟用户保存的首选项。我面临的问题是尝试从字符串中获取“MyComboBox”的索引。

我尝试过使用带有LINQ的MyComboBox.items,但这让我无处可去。

这里有一些关于堆栈溢出的类似问题,但这些问题都没有得到解答。

5 个答案:

答案 0 :(得分:7)

如果您有必要将字符串包装在ComboBoxItem中,那么这应该可行。

MyComboBox.Items.SelectedItem = 
    MyComboBox.Items.SingleOrDefault(c => (c as ComboBoxItem).Content == myString);

我建议不要直接插入ComboBoxItem并将项目设置为String或在代码中设置集合并绑定到它。

答案 1 :(得分:1)

您可以使用以下方法实现此目的。

SetSelectedItem("Pizza");

///将所选项目设置为字符串。

    private void SetSelectedItem(string selectedString)
    {
        Func<ComboBoxItem, ComboBoxItem> selectionFunc = (item) =>
        {
            if(item.Content.ToString() == selectedString)
                return item;
            return null;
        };

        this.MyComboBox.SelectedItem = MyComboBox.Items.Select(s => selectionFunc(s as ComboBoxItem)).FirstOrDefault();
    }

答案 2 :(得分:1)

您好我在Combobox中使用了encountred index的功能

private int Search_Item_Return_Index(ComboBox combo, string Search)
     {
         int index=-1;

         foreach (ComboBoxItem item in combo.Items)
         {
             index++;
             string var = item.Content.ToString() ;
             if (var.Equals(Search))
             {
                 return index;
             }

         }


         return index;

     }

答案 3 :(得分:0)

如果您将字符串放入组合框中,则可以使用

MyComboBox.Items.IndexOf("Pizza")

答案 4 :(得分:0)

我明白了,您可以为xaml添加名称

<ComboBoxItem Tag="0" Name="CBIPizza" IsSelected="True" Content="Pizza" />

然后使用

MyComboBox.Items.IndexOf(CBIPizza);

或...使用

制作项目字符串
  <ComboBox Name="MyComboBox>
    <ComboBox.Items>
            <sys:String>Pizza</sys:String>
            <sys:String>Bread Sticks</sys:String>
      </ComboBox.Items>

当然需要定义

xmlns:sys="clr-namespace:System;assembly=mscorlib"

然后原始示例将起作用