删除ObservableCollection中的项目时,InvalidCastException

时间:2019-12-19 06:44:12

标签: wpf

我正在使用WPF和Prims做一个项目。 在“类别”中删除类别时,发生了错误。

public ObservableCollection<CategoryModel> _categories;
public ObservableCollection<CategoryModel> Categories
{
    get { return _categories; }
    set 
    {
        SetProperty(ref _categories, value);
    }
}

public void OnNavigatedTo(NavigationContext navigationContext)
{
    _journal = navigationContext.NavigationService.Journal;
    var category = navigationContext.Parameters["categoryAdd"] as CategoryModel;
    if (category != null)
        Categories.Add(category);
    category = navigationContext.Parameters["categoryDelete"] as CategoryModel;
    if (category != null)
    {
        foreach(var elm in Categories)
            if (elm.Id == category.Id)
                Categories.Remove(elm); //⇒Error here
    }
}

错误:

  

System.InvalidCastException:“无法转换类型为System.Windows.Controls.SelectionChangedEventArgs的对象”以键入“ SaleManager.Wpf.Admin.Models.CategoryModel”。 '

为什么会出现此错误?如何解决?

2 个答案:

答案 0 :(得分:0)

在阅读此收藏集时,您无法在foreach中进行更改。

您可以执行以下操作:

var item = Categories.FirstOrDefault(elm=> elm.Id == category.Id);
Categories.Remove(item); 

答案 1 :(得分:0)

使用for循环并向后迭代。 elm应该是CategoryModel

if (category != null)
{
    for (int i = Categories.Count - 1; i >= 0; --i)
    {
        CategoryModel elm = Categories[i];
        if (elm.Id == category.Id)
        {
            Categories.Remove(elm);
        }
    }
}
相关问题