13

Option1以下の例から、選択した値 (例: )を取得するにはどうすればよいですかstring。Google でたくさんの提案を試しましたが、文字列を取得できません。

XAML:

<ComboBox x:Name="selectOption" Text="Select Option" 
                 SelectionChanged="selectOption_SelectionChanged" 
                 SelectedValue="{Binding VMselectedOption, Mode=TwoWay}" >
    <ComboBoxItem Name="cbb1">Option1</ComboBoxItem>
    <ComboBoxItem Name="cbb2">Option2</ComboBoxItem>
    <ComboBoxItem Name="cbb3">Option3</ComboBoxItem>
</ComboBox>

コードビハインド:

private void selectOption_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   var selectedValue = selectOption.SelectedValue; 
}

//elsewhere in code
var test = viewModel.VMselectedOption;

selectedValue と test はどちらも、「 Option1 」ではなく「 System.Windows.Controls.ComboBoxItem: Option1 」という文字列返します

これは本当に簡単なはずですが、これを機能させることができないか、何が問題なのかわかりませんか?

4

5 に答える 5

21

SelectedValuePath="Content" を設定する必要があります。

<ComboBox x:Name="selectOption" Text="Select Option" 
                 SelectionChanged="selectOption_SelectionChanged" 
                 SelectedValue="{Binding VMselectedOption, Mode=TwoWay}" 
                 SelectedValuePath="Content">
    <ComboBoxItem Name="cbb1">Option1</ComboBoxItem>
    <ComboBoxItem Name="cbb2">Option2</ComboBoxItem>
    <ComboBoxItem Name="cbb3">Option3</ComboBoxItem>
</ComboBox>
于 2014-08-25T09:34:36.203 に答える
13

コンボボックス項目を手動で挿入しないでください。で設定しますItemsSource

基本的に、オプション (またはオプションを表すオブジェクト) のリストを作成し、それらを として設定する必要がありItemsSourceます。この方法SelectedItemでは、自動的に作成されたラッピングではなく、選択されたオプションになりますComboboxItem

于 2013-10-18T16:03:09.727 に答える
8
string Value="";
if(myComboBox.SelectedIndex>=0) 
  Value=((ComboBoxItem)myComboBox.SelectedItem).Content.ToString();
于 2013-10-18T16:29:08.743 に答える
7

コードを更新して、comboboxItem のコンテンツを取得します。

var selectedValue = ((ComboBoxItem)selectOption.SelectedItem).Content.ToString();
于 2013-10-18T16:04:23.483 に答える
2

ComboBoxItem.Contentは Object 型であるため、項目を自分でキャストする必要があります。

于 2013-10-18T16:03:09.583 に答える