【问题标题】:WPF C# - ComboBox methods return object instead of stringWPF C# - ComboBox 方法返回对象而不是字符串
【发布时间】:2010-07-30 20:53:54
【问题描述】:

我是 WPF 新手,我正在尝试弄清楚如何获取 ComboBox 中所选项目的当前文本值。我在this question 看到有人建议做MyComboBox.SelectedItem.Text。但是,SelectedItem 为我返回了object,所以我只有ToString()Equals 等选项。这是怎么回事?我正在使用 .NET 3.5,在 VS 2010 中开发。我认为可能有用的其他方法,如 MyComboBox.SelectedValue,也返回 objectSelectedIndex 返回 int,但我想要一个 string 值。 MyComboBox 的类型为 ComboBox。我正在以处理 SelectionChanged 事件的方法访问它。

【问题讨论】:

  • 如何填充(或数据绑定)组合框?原则上, selectedItem 与您放入的类型相同,仅作为对象公开。可以简单到s = (string) cbx.SelectedItem;

标签: c# wpf combobox selectionchanged


【解决方案1】:

你试过MyComboBox.Text 吗?这将返回当前选定项目的文本。

你也可以将SelectItem解析成你设置的数据源的类型,直接从对象中获取你想要的文本属性?

MyObject obj = (MyObject)MyComboBox.SelectedItem;
string text = obj.Text;

【讨论】:

  • 这绝对给了我一个字符串值。不过,即使我将给我的事件处理程序的 object 转换为 ComboBox 并使用它的 Text 值,我似乎也得到了 ComboBox 过去的值。
  • 您获得了以前的价值?在设置新项目之前是否以某种方式触发了事件?
  • 我不确定。我的 XAML 中有这个:`SelectionChanged="Product_SelectionChanged", and Product_SelectionChanged` 是我的事件处理程序方法的名称。我应该使用不同的事件吗?
  • 不是我会使用的事件,尽管您可以尝试使用另一个事件来查看它是否仍然存在相同的问题。当您在组合框中选择不同的项目时,它会触发两次还是仅触发一次?
  • MyComboBox.Text 为您提供非常简单的显示在顶部(以及关闭时)的文本。如果您的组合框允许编辑,则它可能与所选项目不同。
【解决方案2】:

每个项目都是一个对象。 显示的数据是 Object.ToString (Item.ToString)

但您可以使用 Object 中的任何其他 Object 成员、属性或方法。 您已将对象添加到 Combo,然后您知道对象类型并可以投射它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-18
    • 2011-07-29
    • 2012-11-26
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多