其他分享
首页 > 其他分享> > CodeGo.net>从多选检索列表框的选定值

CodeGo.net>从多选检索列表框的选定值

作者:互联网

我有一个使用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字段).

提前非常感谢您.

亲切的问候.

解决方法:

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

标签:listbox,anonymous-types,multi-select,wpf,c
来源: https://codeday.me/bug/20191201/2084005.html