单击另一个按钮时无法获得组合框选定的项目值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单击另一个按钮时无法获得组合框选定的项目值相关的知识,希望对你有一定的参考价值。
我有一个组合框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
等等
但没有得到解决方案。
请注意我需要在按钮上单击按钮时获取组合框的值,而不是cmb SelectionChange事件
通过使用.Content.ToString()
,整个事物被转换为字符串,并且您试图将此结果字符串转换为ComboBoxItem
,这样的转换是不允许的,但是您可以将SelectedItem
转换为ComboBoxItem
然后从中获取值。尝试这样的事情:
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
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;
// }
//}
这个怎么样?前者工作,但评论循环给我一个错误的铸造,尝试selectedindex但相同的结果,只有前者工作。
以上是关于单击另一个按钮时无法获得组合框选定的项目值的主要内容,如果未能解决你的问题,请参考以下文章