我找到了这个类,我用它来为我的组合框生成项目(作为数据源):
public class ComboBoxItem
{
public string Text { get; set; }
public object Value { get; set; }
public override string ToString()
{
return Text;
}
}
问题在于,只要我需要访问ComboBox
的选定值,它就会返回Text
,尽管value
和Text
都可见我解析了我的应用,无法访问Value
。看图:
和这张照片
我想我需要一个ToInt()
函数来将我的类的值作为int返回。我怎样才能实现它?
答案 0 :(得分:3)
您需要将SelectedItem强制转换为ComboBoxItem,然后访问它的Value属性:
var i = ((ComboBoxItem)sTD_PROVINCEComboBox.SelectedItem).Value;
由于i
将包含Value
,因此在foreach
中,您只需执行以下操作:
foreach(var item in UE2.Cities.Where(x => x.CITY_PROVINCE_ID == i)
更新:
注意Value
的{{1}}属性是object类型(我假设它是int)。如果是这种情况,上面的foreach部分将不会编译(不允许将int与object进行比较)。假设ComboBoxItem
的类型为int,而CITY_PROVINCE_ID
存储为boxed int,则需要将i
解包为int:
i
答案 1 :(得分:2)
要访问Value
属性,您需要将SelectedItem强制转换为正确的类型:
object i = ((ComboBoxItem)sTD_PROVINCEComboBox.SelectedItem).Value;
请注意,我是对象类型。我认为CITY_PROVINCE_ID
的类型为int
。您无法测试对象和int的引用相等性,因此这样的语句甚至无法编译:
foreach(var item in UE2.Cities.Where(x => x.CITY_PROVINCE_ID == i)
错误消息将是“运算符'=='的行,不能应用于'object'和'int'类型的操作数。”
您可以做的是将对象强制转换为int:
object o = ((ComboBoxItem)sTD_PROVINCEComboBox.SelectedItem).Value;
int i = (int)o;
这显然只有在您将int
存储为值时才有效。如果Value
可能包含其他内容(例如,字符串),则还需要对其进行测试;