2011-06-10 16 views
14

Mam combobox takiego:Uzyskaj tag wybranego elementu w 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> 

Jak mogę uzyskać wartość zmiennych w kodzie?

napisanie czegoś takiego jak ExpireAfterTimeComboBox.SelectedItem.Tag nie działa.

Odpowiedz

27

Należy rzucić go do typu ComboBoxItem.

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

Nie być pedantyczny lub cokolwiek, ale dlaczego nie wystarczy zadeklarować selectedTag jako ciąg znaków, jeśli wywołujesz metodę Object.ToString()? – djdanlib

+1

@djdanlib - Bez szczególnego powodu. Kiedy zacząłem pisać odpowiedź, użyłem 'var', a na koniec wstawiłem' ToString' po przypomnieniu sobie, że 'Tag' zwraca obiekt, a nie ciąg znaków. – keyboardP

1

Spróbuj

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

w SelectionChanged obsługi zdarzeń lub w jakiejkolwiek funkcji lub zdarzeń obsługi.

5

Jeśli można zmodyfikować deklarację ComboBox do następujących:

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

Mogłeś odzyskać tag tak:

var selectedTag = ExpireAfterTimeComboBox.SelectedValue; 
Powiązane problemy