我在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/

10-17 00:59