views:

582

answers:

3

Easy one for you all...

I'm new to Silverlight and really missing stuff like DataTables and things. What I'm also currently struggling with is how to get the text of my combobox's currently selected item. In winforms I would have done:

ComboBox myCombo = new ComboBox.......
string selected = myCombo.Text;

I'm struggling how to get this info out.

A: 
myCombo.SelectedItem.Content

will return the content of the ComboBoxItem. This could be a TextBlock, etc. depending on what you have in there, and what you are using for an item template.

Muad'Dib
Nope, that doesn't work 1) because SelectedItem isn't a string and 2) even if you do .ToString() on it then it returns System.Windows.Controls.ComboBoxItem. I know I can probably parse this and get the info out but surely there is an easier way?
Calanus
A: 

Right, the answer is to use myCombo.SelectionBoxItem.ToString()

Calanus
+2  A: 

The selected item of your combo box is whatever type of item is currently holding. So if you set the binding to a collection of strings, then the selected item will be a string:

string mySelectedValue = ((string)MyComboBox.SelectedItem);

If it is a more complex object you will need to cast and use the expected object. If you have XAML using the list box item class, like:

<ComboBox x:Name="MyComboBox">
    <ComboBox.Items>
        <ComboBoxItem>
            <TextBlock Text="Hello World"/>
        </ComboBoxItem>
    </ComboBox.Items>
</ComboBox>

Then you would access the selected item like this:

string mySelectedValue = 
  ((TextBlock)((ComboBoxItem)MyComboBox.SelectedItem).Content).Text;
Jason Jackson