在WPF ComboBox中获取所选项的标记

kat*_*tit 16 c# silverlight 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>
Run Code Online (Sandbox Code Playgroud)

如何在代码中获得Tag值?

写一些ExpireAfterTimeComboBox.SelectedItem.Tag不起作用的东西.

key*_*rdP 31

你需要把它投射到一种类型ComboBoxItem.

  var selectedTag = ((ComboBoxItem)ExpireAfterTimeComboBox.SelectedItem).Tag.ToString();
Run Code Online (Sandbox Code Playgroud)

  • @djdanlib - 没有特别的原因.当我开始输入答案时,我使用`var`,然后在记住`Tag`返回一个对象而不是一个字符串后,最后输入`ToString`. (2认同)

Par*_*hah 9

如果您可以将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>
Run Code Online (Sandbox Code Playgroud)

你可以像这样检索标签:

var selectedTag = ExpireAfterTimeComboBox.SelectedValue;
Run Code Online (Sandbox Code Playgroud)