2011-06-10 25 views
14

Tengo cuadro combinado de la siguiente manera:Obtener la etiqueta del elemento seleccionado en ComboBox WPF

<ComboBox Name="ExpireAfterTimeComboBox" Margin="5" SelectedIndex="0"> 
    <ComboBoxItem Content="15 minutes" Tag="15" /> 
    <ComboBoxItem Content="30 minutes" Tag="30" /> 
    <ComboBoxItem Content="1 hour" Tag="60" /> 
    <ComboBoxItem Content="1 day" Tag="1440" /> 
</ComboBox> 

¿Cómo llego valor de la etiqueta de código?

escribiendo algo así como ExpireAfterTimeComboBox.SelectedItem.Tag no funciona.

Respuesta

27

Necesita convertirlo a un tipo de ComboBoxItem.

var selectedTag = ((ComboBoxItem)ExpireAfterTimeComboBox.SelectedItem).Tag.ToString(); 
+0

no ser pedante ni nada, pero ¿por qué no declaran selectedTag como una cadena si estás llamando al método Object.ToString()? – djdanlib

+1

@djdanlib - Sin motivo en particular. Cuando comencé a escribir la respuesta, utilicé 'var', luego al final puse' ToString' después de recordar que 'Tag' devuelve un objeto, no una cadena. – keyboardP

1

Trate

string str = ((ComboBoxItem)this.ExpireAfterTimeComboBox.SelectedItem).Tag.ToString(); 

en SelectionChanged controlador de eventos o en cualquier función o evento manejador.

5

Si se pudiera modificar su declaración de cuadro combinado a lo siguiente:

<Combobox Name="ExpireAfterTimeComboBox" Margin="5" SelectedValuePath="Tag"> 
    <ComboBoxItem Content="15 minutes" Tag="15" IsSelected="True" /> 
    <ComboBoxItem Content="30 minutes" Tag="30" /> 
    <ComboBoxItem Content="1 hour" Tag="60" /> 
    <ComboBoxItem Content="1 day" Tag="1440" /> 
</Combobox> 

Se pudo recuperar la etiqueta de este modo:

var selectedTag = ExpireAfterTimeComboBox.SelectedValue; 
Cuestiones relacionadas