Получение выбранных значений из ListBox с множественным выбором - PullRequest
3 голосов
/ 16 января 2012

У меня есть один WPF ListBox, загруженный с использованием LINQ:

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.Проблема в том, что я пытаюсь извлечь все SelectedValue (ID) из списка SelectedItems.

Когда я проверяю один SelectedItem во время выполнения, тип объекта "<> f__AnonymousType0`2"

Iпопытался использовать это:

ItemPropertyInfo ID  = null;

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

Но это не сработало.

Мне нужно решение для доступа к выбранным значениям ListBox (поля идентификатора).

Большое спасибозаранее.

С уважением.

Ответы [ 2 ]

3 голосов
/ 16 января 2012

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);
0 голосов
/ 16 января 2012

GetValue ожидает источник значения, поэтому вам следует использовать SelectedItem, а не какое-то случайное значение и определенно не нуль.

...