【问题标题】:How to get ComboBox.SelectedText in WPF如何在 WPF 中获取 ComboBox.SelectedText
【发布时间】:2010-07-02 21:53:24
【问题描述】:

在 WPF ComboBox 中没有 SelectedText 属性。

有没有办法实现与 WPF 中 TextBox SelectedText 相同的功能

【问题讨论】:

    标签: wpf


    【解决方案1】:

    您可以通过以下方式访问组合框的文本框:

    var edit = (TextBox)myCombo.Template.FindName("PART_EditableTextBox", myCombo);
    

    然后您可以访问该 TextBox 的 SelectedText 属性:

    var selectedText = edit.SelectedText;
    

    【讨论】:

    • 这仅在您的 ComboBox 已显示(即它是从其 ControlTemplate 生成)时才有效,因此您不能执行诸如创建 ComboBox 并立即关注其 TextBox 之类的操作
    【解决方案2】:

    由于 WPF 是“无外观”的,因此您可以以任何您希望的方式显示您的组合框项目。可能有也可能没有文本项。

    MyCombo.SelectedText 没有任何意义,例如,如果你在那里显示图标。

    你想要的是ComboBox.SelectedItem,然后访问你的对象。例如,如果您正在使用“人”对象的后备列表......MyComboBox.SelectedItem.PersonName

    通常,SelectedItem 数据绑定到您的对象模型或另一个控件。

    【讨论】:

    • 我在上面的帖子中得到了答案。当 ComboBox 处于编辑模式时,我需要 ComboBox 中的 SelectedText 来进一步处理它们。
    【解决方案3】:

    没有名为 selectedText 的属性,但您可以通过ComboBox.SelectedValue.ToString() 方法实现。这是因为默认情况下组合框的值是 Object 类型,所以我们必须适当地进行类型转换。

    【讨论】:

    • 这并不完全正确。如果您使用的是自定义项目模板,您的代码将与呈现的字符串不匹配。理想情况下,您应该这样做,例如,将 Employee 对象放在列表中,而不是一堆自定义生成的字符串。
    【解决方案4】:

    使用这个:

    ComboBoxItem Item = (ComboBoxItem) YourComboBoxName.SelectedValue;
    

    然后这个:

    Console.WriteLine(Item.Content);
    

    【讨论】:

      【解决方案5】:

      你为什么不试试:

      string selectedtext= Combobox.Text;
      

      它对我有用。

      【讨论】:

        【解决方案6】:

        另一种方法:

        (string)comboBox.SelectedItem.GetType().GetProperty(DisplayMemberPath).GetValue(comboBox.SelectedItem);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-13
          • 1970-01-01
          • 1970-01-01
          • 2012-04-28
          • 1970-01-01
          • 2019-02-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多