C# 使用multiselect从列表框中检索选定值
我使用LINQ加载了一个WPF列表框:C# 使用multiselect从列表框中检索选定值,c#,wpf,listbox,anonymous-types,multi-select,C#,Wpf,Listbox,Anonymous Types,Multi Select,我使用LINQ加载了一个WPF列表框: lbxCalculosSec.ItemsSource = from p in database.CALCULOS orderby p.NOMBRECALCULO select new { ID = p.IDCALCULO, NOMBRE = p.NOMBRECALCULO + " - " + p.DESCRIPCIONCALCULO };
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列表中检索所有SelectedValue(ID)时
当我在运行时检查一个SelectedItem时,对象类型是“f_uuAnonymousType0`2”
我试着用这个:
ItemPropertyInfo ID = null;
lbxCalculosSec.SelectedItem.GetType().GetProperty("ID").GetValue(ID as ItemPropertyInfo, null)
但它不起作用
我需要一个解决方案来访问列表框中选定的值(ID字段)
事先非常感谢
亲切问候。
GetValue
需要值的源代码,因此您应该在那里使用SelectedItem,而不是一些随机值,并且绝对不能为null。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);
此解决方案只需稍作更改即可工作。ID必须是int类型,而不是ItemPropertyInfo。