2011-06-10 48 views
14

Tôi có combobox như thế này:Nhận thẻ của mục đã chọn trong 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> 

Làm thế nào để nhận được giá trị Tag trong mã?

viết gì đó như ExpireAfterTimeComboBox.SelectedItem.Tag không hoạt động.

Trả lời

27

Bạn cần truyền nó tới một loại ComboBoxItem.

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

Không được pedantic hoặc bất cứ điều gì, nhưng tại sao không chỉ cần khai báo selectedTag như một chuỗi nếu bạn đang gọi phương thức Object.ToString()? – djdanlib

+1

@djdanlib - Không có lý do cụ thể. Khi tôi bắt đầu gõ câu trả lời, tôi đã sử dụng 'var', sau đó ở cuối đặt' ToString' sau khi nhớ rằng 'Tag' trả về một đối tượng, không phải là một chuỗi. – keyboardP

1

Hãy thử

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

trong SelectionChanged xử lý sự kiện hoặc trong bất cứ chức năng hoặc xử lý sự kiện.

5

Nếu bạn có thể sửa đổi tuyên bố Combobox của bạn như sau:

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

Bạn có thể lấy thẻ như vậy:

var selectedTag = ExpireAfterTimeComboBox.SelectedValue; 
Các vấn đề liên quan