在WPF ComboBox中获取所选项目的标签

17

我有一个像这样的组合框:

<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 这样的写法无效。

3个回答

34
你需要将其转换为ComboBoxItem类型。
  var selectedTag = ((ComboBoxItem)ExpireAfterTimeComboBox.SelectedItem).Tag.ToString();

1
不是要挑剔什么,但如果你正在调用Object.ToString()方法,为什么不将selectedTag声明为字符串呢? - djdanlib
2
@djdalib - 没有特别的原因。当我开始输入答案时,我使用了 var,然后在记起 Tag 返回一个对象而不是字符串后,在结尾处加上了 ToString - keyboardP

13

如果您可以将Combobox声明修改为以下内容:

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

2

尝试

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

SelectionChanged 事件处理程序或任何函数或事件处理程序中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接