C#WPF:从列表中删除ListView.Selecteditems中收到的项目

时间:2017-04-05 15:55:59

标签: c# listview casting

我有一个班级书和清单。我正在使用ListView显示我的列表,我想在按下按钮时删除所选项目。 这是我的方法:

private void currentlyReadingRemoveItem_Click(object sender, RoutedEventArgs e)
    {
        var selectedItems = CurrentlyReadingBooksListView.SelectedItems;
        _currentlyReadingBooks.Except((List<Book>)selectedItems);
    }

然而,我收到此错误:

  

System.InvalidCastException:'无法转换类型的对象   键入'System.Windows.Controls.SelectedItemCollection'   'System.Collections.Generic.List`1 [BookshelfLibrary.Book]''。

过去一小时我一直试图解决这个问题,我尝试了其他一些铸造方法,我甚至不知道还有什么,我太累了,无法思考。 这是整个项目:https://github.com/GoldenDragonPC/Bookshelf

提前谢谢。

编辑: 工作代码。

            var selectedItems = CurrentlyReadingBooksListView.SelectedItems;
        var test = _currentlyReadingBooks.Except(selectedItems.Cast<Book>());
        _currentlyReadingBooks = test.ToList();
        WriteData(_currentlyReadingBooks, CurrentlyReadingPath);
        InitializeList();

1 个答案:

答案 0 :(得分:0)

尝试使用linq的强制转换方法。类似的东西:

_currentlyReadingBooks.Except(selectedItems.Cast<Book>()?.ToList());

<强>更新

_currentlyReadingBooks = _currentlyReadingBooks.Except(selectedItems.Cast<Book>()).ToList();