2011-03-16 122 views
0

我有一个ListView绑定到某个对象的Observable集合。选择和ListView中的项目显示一个窗体。我的商业案例是当用户在ListView中从一个项目切换到其他项目时,如果有任何未保存的更改,则会提示用户是/否/取消。如果用户点击否,则应从列表中删除所选项目。WPF ListView删除项目IsSelected MVVM

我有一个ViewModel的ListViewItem和IsSelected属性,我提示用户。现在,当我从观察集合中删除该项目时,IsSelected =真,这是获得选择下一次,我收到错误..

“集合被修改;枚举操作可能不会执行” ..

+1

你应该真的发布一些代码。绑定到你的列表框,虚拟机代码和剪切操作的错误抛出 – blindmeis 2011-03-16 06:51:48

回答

1

我很确定你遇到问题,因为你的程序在选择它的同时从集合中删除当前选定的项目。点击该项目将更改SelectedItemListView,并且您将同时移除该项目,而不为SelectedItem设置新值。

你可能想要做的是在窗口的视图模型中创建一个属性,并将ListViewSelectedItem属性绑定到它。当该属性的值发生变化时,您可以提示用户,然后将SelectedItem设置为适当的值(例如,在当前选定的项目被移除后选择的项目应该是什么,否则为null)之前,您将其从底层集合中删除。

+0

我面临同样的问题,我理解你的解决方案。我用同样的方式,但仍面临同样的问题。 – PawanS 2011-03-25 14:59:45