无法在组合框中获取选定的文本或值

本文关键字:文本 获取 组合 | 更新日期: 2023-09-27 18:22:18

我的wpf应用程序中有一个包含三项的组合框:

<ComboBoxItem Tag="some value">Text</ComboBoxItem>
<ComboBoxItem Tag="some value2">Text2</ComboBoxItem>
<ComboBoxItem Tag="some value3">Text3</ComboBoxItem>

我想在运行时获取选定的文本或值。当我这样做时:

myComboBox.SelectedValue.ToString()

它返回这个:

System.Windows.Controls.ComboBoxItem: Text2

如何获取选定的文本或值?

无法在组合框中获取选定的文本或值

因为您想要ComboBoxItemContent属性,所以应该这样尝试:

(myComboBox.SelectedValue as ComboBoxItem).Content.ToString();

或者对于Tag:

(myComboBox.SelectedValue as ComboBoxItem).Tag.ToString();

您需要将组合框的SelectedItem属性强制转换为对象,然后才能访问这些属性。因此,在您的情况下,您需要将其强制转换为ComboBoxItem。

您只需要从对象中获取标记。

<ComboBox SelectionChanged="Selector_OnSelectionChanged">
    <ComboBoxItem Tag="some value">Text</ComboBoxItem>
    <ComboBoxItem Tag="some value2">Text2</ComboBoxItem>
    <ComboBoxItem Tag="some value3">Text3</ComboBoxItem>
</ComboBox>
    private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var cb = sender as ComboBox;
        if (cb == null)
        {
            return;
        }
        var selectedItem = cb.SelectedValue as ComboBoxItem;
        if (selectedItem == null)
        {
            return;
        }
        var tag = selectedItem.Tag;
        Debug.WriteLine(tag);  
    }

试试这个

<ComboBox Name="comboBox" SelectedValuePath="Content">
  <ComboBoxItem>text</ComboBoxItem>
  <ComboBoxItem>here</ComboBoxItem>
  <ComboBoxItem>text</ComboBoxItem>
</ComboBox>

获取值

 var value = comboBox.SelectedValue.ToString()