从多选的列表框中检索所选值

3

我有一个使用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列表中检索所有SelectedValue(ID)时。在运行时检查一个SelectedItem时,其对象类型为“<> f__AnonymousType0`2”。我尝试使用以下代码:
ItemPropertyInfo ID  = null;

lbxCalculosSec.SelectedItem.GetType().GetProperty("ID").GetValue(ID as ItemPropertyInfo, null)

但是它没有起作用。

我需要一种解决方案来访问ListBox选定的值(ID字段)。

非常感谢您提前的帮助。

祝好。

2个回答

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);

这个解决方案可以用一点改动来实现。ID必须是int类型,而不是ItemPropertyInfo。 - Quicker

0

GetValue 需要一个值的来源,因此您应该在那里使用 SelectedItem,而不是一些随机的值,绝对不能是 null。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接