2011-06-10 13 views
14

ho combobox come questo:Ottenere tag dell'elemento selezionato in WPF ComboBox

<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> 

Come faccio ad avere il valore di tag nel codice?

scrivere qualcosa come ExpireAfterTimeComboBox.SelectedItem.Tag non funziona.

risposta

27

È necessario convertirlo in un tipo di ComboBoxItem.

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

Non per essere pedanti o altro, ma perché non solo dichiarano selectedTag come una stringa se stai chiamando il metodo Object.ToString()? – djdanlib

+1

@djdanlib - Nessun motivo particolare. Quando ho iniziato a digitare la risposta, ho usato 'var', quindi alla fine ho messo' ToString' dopo aver ricordato che 'Tag' restituisce un oggetto, non una stringa. – keyboardP

1

Prova

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

in SelectionChanged gestore di eventi o in qualsiasi gestore di funzione o di un evento.

5

Se si potesse modificare la dichiarazione Combobox al seguente:

<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> 

Si potrebbe recuperare il tag in questo modo:

var selectedTag = ExpireAfterTimeComboBox.SelectedValue;