2010-07-30 108 views
0

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

+0

如何填充(或数据绑定)组合框?原则上,selectedItem与放入的类型相同,仅作为对象公开。它可以像s =(string)cbx.SelectedItem一样简单;' – 2010-07-30 14:17:01

回答

2

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

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

3

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

您还可以将SelectItem解析为您设置的数据源的类型,并直接从对象中获取所需的文本属性?

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

这绝对给了我一个字符串值。不过,即使我将赋予我的事件处理函数的'object'赋予'ComboBox'并使用它的'Text'值,看起来我已经获得了ComboBox曾经的价值。 – 2010-07-30 12:54:48

+0

你会得到过去的价值吗?在设置新项目之前是否以某种方式触发事件? – w69rdy 2010-07-30 12:58:02

+0

我不确定。我在我的XAML中有:'SelectionChanged =“Product_SelectionChanged”',而'Product_SelectionChanged'是我的事件处理程序方法的名称。我应该使用不同的事件吗? – 2010-07-30 13:01:52

相关问题