2011-06-10 71 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;