当我试图使用MVVM框架关闭我们的Silverlight应用程序中的视图时,出现以下错误:
集合已修改;枚举操作可能无法执行。
这是我的代码:
ObservableCollection<IViewModel> _viewModels = new ObservableCollection<IViewModel>();
var _viewManager = AppContext.Current.ViewService.GetViewManager("Main");
var _views = _viewManager.OpenViews;
_viewModels = _views;
foreach (var _vm in _viewModels)
{
_viewManager.CloseView(_vm);
}
ToArray()
的全部意义,确保我们不会直接(或间接地)遍历实际集合。使用它会将元素复制到一个单独的集合中,该集合本身不会被修改。 - Jeff Mercado