2011-06-10 44 views
14

我有組合框是這樣的:獲取選定項的標籤在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> 

如何在代碼獲取標記值?

寫一些像ExpireAfterTimeComboBox.SelectedItem.Tag不起作用。

回答

27

您需要將其轉換爲ComboBoxItem的類型。

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

不要迂腐或任何東西,但爲什麼不只是聲明selectedTag爲一個字符串,如果你正在調用Object.ToString()方法? – djdanlib 2011-06-10 16:52:34

+1

@djdanlib - 沒有特別的理由。當我開始輸入答案時,我使用了'var',然後在記住'Tag'返回一個對象而不是字符串後放置'ToString'。 – keyboardP 2011-06-10 16:56:19

1

嘗試在SelectionChanged事件處理程序或任何函數或事件處理

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

5

如果你可以修改你的組合框聲明如下:

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

你可以檢索標籤,像這樣:

var selectedTag = ExpireAfterTimeComboBox.SelectedValue;