一个适合你的人......
我是Silverlight的新手,并且真的缺少像DataTables这样的东西。我目前正在努力的是如何获取我的组合框当前所选项目的文本。 在winforms我会做:
ComboBox myCombo = new ComboBox.......
string selected = myCombo.Text;
我正在努力解决这个问题。
答案 0 :(得分:9)
组合框的选定项目是当前持有的任何类型的项目。因此,如果将绑定设置为字符串集合,则所选项目将为字符串:
string mySelectedValue = ((string)MyComboBox.SelectedItem);
如果它是一个更复杂的对象,则需要强制转换并使用预期的对象。如果您使用列表框项目类XAML,例如:
<ComboBox x:Name="MyComboBox">
<ComboBox.Items>
<ComboBoxItem>
<TextBlock Text="Hello World"/>
</ComboBoxItem>
</ComboBox.Items>
</ComboBox>
然后您将访问所选项目,如下所示:
string mySelectedValue =
((TextBlock)((ComboBoxItem)MyComboBox.SelectedItem).Content).Text;
答案 1 :(得分:7)
是的,答案是使用myCombo.SelectionBoxItem.ToString()
答案 2 :(得分:3)
对于复杂对象,请使用DisplayMemberPath属性的反射:
var itemType = cbx.SelectedItem.GetType();
var pi = itemType.GetProperty(cbx.DisplayMemberPath);
var stringValue = pi.GetValue(cbx.SelectedItem, null).ToString();
答案 3 :(得分:1)
string txt=(comboboxID.SelectedItem as BindingClass).Text.ToString();
string value=(comboboxID.SelectedItem as BindingClass).Value.ToString();
public class BindingClass
{
public string Text
{
set;
get;
}
public string Value
{
set;
get;
}
}
答案 4 :(得分:1)
((ComboBoxItem)comboBox1.SelectedItem).Content.ToString()
我通过这个声明得到了它。
答案 5 :(得分:0)
如果您有一个简单的组合框用于字符串数组,您可以使用
获取所选字符串(string)e.AddedItems[0];
假设我有一个产品列表组合,我想知道所选的产品名称。所以在SelectionChanged事件中,我编写了以下代码:
private void productCombo_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
string product_type=(string)e.AddedItems[0];
}
答案 6 :(得分:-1)
myCombo.SelectedItem.Content
将返回ComboBoxItem的内容。这可能是一个TextBlock等,具体取决于你在那里的内容,以及你用于项目模板的内容。