我使用LINQ加载了一个WPF ListBox:
lbxCalculosSec.ItemsSource = from p in database.CALCULOS
orderby p.NOMBRECALCULO
select new { ID = p.IDCALCULO, NOMBRE = p.NOMBRECALCULO + " - " + p.DESCRIPCIONCALCULO };
lbxCalculosSec.DisplayMemberPath = "NOMBRE";
lbxCalculosSec.SelectedValuePath = "ID";
列表框中有multiselect = true。问题是当我尝试从SelectedItems List中检索所有SelectedValue(ID)时。
当我在运行时检查一个SelectedItem时,对象类型为“<> f__AnonymousType0`2”
我试过用这个:
ItemPropertyInfo ID = null;
lbxCalculosSec.SelectedItem.GetType().GetProperty("ID").GetValue(ID as ItemPropertyInfo, null)
但它不起作用。
我需要一个解决方案来访问ListBox Selected Values(ID字段)。
非常感谢你。
亲切的问候。
答案 0 :(得分:3)
GetValue
期望定义属性的实例,在这种情况下它是SelectedItem
:
var item = lbxCalculosSec.SelectedItem;
ItemPropertyInfo ID = (ItemPropertyInfo)item.GetType()
.GetProperty("ID")
.GetValue(item, null);
修改强>
如果ID
属于某种其他类型,例如int,则代码应为:
var item = lbxCalculosSec.SelectedItem;
int ID = (int)item.GetType()
.GetProperty("ID")
.GetValue(item, null);
答案 1 :(得分:0)
GetValue
期待值的来源,所以你应该在那里使用SelectedItem,而不是一些随机值,绝对不是null。