我在WPF中有一个使用ItemSource属性绑定到ObservableCollection的列表框。这样可以正常工作,并显示正确的项目。
列表框(包含图像名称列表)在SelectionChanged事件上具有事件处理程序,该事件处理程序使用选定图像的路径更新Image控件的源(有效地提供图像预览)。
我有以下代码,可以在按钮的click事件中从盒中删除项目:
if (lstLocal.SelectedIndex > -1)
{
localImages.RemoveAt(lstLocal.SelectedIndex);
}
localImages是
ObservableCollection
,lstLocal是ListBox
。但是,当我删除选定的项目时,这会引发SelectionChanged事件。我的SelectionChanged事件处理程序使用了列表框上的SelectedIndex属性。我得到了exeption
Index was out of range. Must be non-negative and less than the size of the collection.
,所以我猜想删除一个项目会导致SelectedIndex设置为null(或负数)之类的东西?有办法解决这个问题吗?我想我有一种更好的方法来删除项目,或者我需要对SelectionChanged处理程序进行某种检查?
最佳答案
将代码包装在SelectionChanged处理程序中
if (lstLocal.SelectedItem != null)
{
...
}
关于c# - WPF从列表框中删除项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5543028/