Правильный способ взаимодействия с SelectedItems (IList / SelectedObjectCollection) в Listbox (view -> viewmodel)

1

При взаимодействии с одним элементом в списке, его достаточно просто:

  myClass citem = (myClass)myListBop.SelectedItem.
  viewModel.doSomethingWithItem(cItem)

Каков правильный способ для нескольких элементов? Я видел примеры простого копирования данных в список, но, конечно же, лучше было бы избежать копирования и пойти для правильного перевода? Resharper любезно сообщает мне, что я могу что-то делать неправильно:

Изображение 174551

Где предложение:

Suspicious case: there is no type in the solution which is inherited from both "Sytem.Windows.Forms.ListBox.SelectedObjectCollection" and "System,Collections.Generic.IList<myClass>"

В основном, каково предполагаемое использование IList/SelectedObjectCollection?

  • 1
    Нет никакой связи между: ListBox.SelectedObjectCollection и IList<MyClass> Оба они имеют IList в качестве базового класса
Теги:
listbox
ilist

1 ответ

1
Лучший ответ

Каков правильный способ для нескольких элементов?

SelectedObjectCollection не реализует IList<T>. вы не можете просто бросить его. Вместо этого вы можете использовать метод Cast чтобы отображать все элементы в ваш тип и помещать их в список:

myListBop.SelectedItems.Cast<myClass>().ToList();
  • 0
    Нужен ли мне "толист", могу ли я просто использовать результат? "IEnumerable"
  • 0
    @ chrispepper1989 Приведение не будет выполнено, пока вы не выполните итерацию по результату. ToList выполняет итерацию. Если вы не хотите сразу же перечислять результат, вы можете удалить ToList

Ещё вопросы

Сообщество Overcoder
Наверх
Меню