我有一个组合框 cmbOptions 和一个按钮 btnShowItem
以及代码:
private void btnShowItem_click(object sender, RoutedEventArgs e)
{
string item = ((ComboBoxItem)cmbOptions.SelectedItem).Content.ToString(); //Exception is here
}
以下是例外情况:
System.InvalidCastException :"无法转换类型' System.String'的对象输入' System.Windows.Controls.ComboBoxItem'。"
我已经浏览了很多这样的链接:
Cannot get ComboBox selected item value
ComboBox- SelectionChanged event has old value, not new value
Get selected value from combo box in c# wpf
等等等。但没有得到解决方案。
请注意我需要在buttonclick上获取comboboxItem的值,而不是cmbSelectionChange事件
答案 0 :(得分:6)
通过使用.Content.ToString()
,整个事物将转换为字符串,并且您尝试将此结果字符串强制转换为ComboBoxItem
,但不允许进行转换,但您可以将SelectedItem
强制转换为ComboBoxItem
a ComboBoxItem currentItem = (ComboBoxItem)cmbOptions.SelectedItem; // this will be the comboBoxItem
string item =currentItem.Content.ToString(); // gives you the required string
然后从中获取值。尝试这样的事情:
string item =((ComboBoxItem)cmbOptions.SelectedItem).Content.ToString();
如果您将这两个步骤组合在一起,可以这样写:
SelectedItem
附加说明:
你仍然得到相同的异常意味着string item = cmbOptions.SelectedItem.ToString()
将是一个字符串,尝试获取这样的值:DisplayMemberPath
,这将发生,因为你可能会分配set(ax,'YDir','reverse');
答案 1 :(得分:0)
for (int x = 0; x < cboType.Items.Count; x++)
{
cboType.SelectedIndex = x;
var typeCombo = ((ComboBox)cboType);
var valueType = ((ComboBoxItem)typeCombo.SelectedValue);
if (thisProductInfo.Type == valueType.Content.ToString())
{
cboType.SelectedIndex = x;
break;
}
}
//for (int x = 0; x < cboColor.Items.Count; x++)
//{
// cboColor.SelectedIndex = x;
// var colorCombo = ((ComboBox)cboColor);
// var valueColor = ((ComboBoxItem)colorCombo.SelectedValue);
// if (thisProductInfo.Type == valueColor.Content.ToString())
// {
// cboColor.SelectedIndex = x;
// break;
// }
//}
这个怎么样?前者工作,但评论循环给我一个错误的铸造,尝试选择索引但相同的结果,只有前者工作。