2


2

文字列名からSilverlightコンボボックス選択項目を設定

シルバーライトコンボボックスで選択したアイテムを文字列から設定しようとしています。

この例では、次のように「MyComboBox」という名前のコンボボックスがあるとします。


ユーザーが保存した設定をシミュレートするために、リストから上記の文字列値をランダムに選択しています。 私が直面している問題は、文字列から「MyComboBox」のインデックスを取得しようとしています。

私はLINQでMyComboBox.itemsを使用しようとしましたが、それは私をどこにも連れて行っていません。

スタックオーバーフローに関する同様の質問がここにいくつかありますが、これらのどれも回答されていません。

5 Answer


7


文字列を `ComboBoxItem`でラップする必要がある理由がある場合、これは動作するはずです。

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

ComboBoxItem`を直接挿入して項目を String`に設定したり、コードでコレクションを設定してバインドしたりしないことをお勧めします。


1


これを実現するには、次を使用します。

SetSelectedItem("Pizza");

/// Set selected item as string.

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

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


1


こんにちは私はコンボボックスでカウントされたインデックスに関数を適用しています

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;

     }


0


コンボボックスに文字列を入れている場合は、使用できます

MyComboBox.Items.IndexOf("Pizza")


0


なるほど、xamlに名前を追加できます


それから使う

MyComboBox.Items.IndexOf(CBIPizza);

'' '' '

または…​ 代わりに、アイテムの文字列を作成します


その後、元の例が動作します