我正在使用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”。 '
为什么会出现此错误?如何解决?
答案 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);
}
}
}