我在 WPF 中有一个列表框,它使用 ItemSource 属性绑定(bind)到 ObservableCollection。这工作正常,显示了正确的项目。
列表框(包含图像名称列表)在 SelectionChanged 事件上有一个事件处理程序,该事件处理程序使用所选图像的路径更新图像控件的源(有效地提供图像预览)。
我有以下代码可以在按钮的单击事件上从列表框中删除项目:
if (lstLocal.SelectedIndex > -1)
{
localImages.RemoveAt(lstLocal.SelectedIndex);
}
localImages 是 ObservableCollection
,lstLocal 是 ListBox
。
但是,当我删除所选项目时,这会导致 SelectionChanged 事件触发。我的 SelectionChanged 事件处理程序利用列表框上的 SelectedIndex 属性。我收到异常索引超出范围。必须为非负数且小于集合的大小。
,所以我猜测删除项目会导致 SelectedIndex 设置为 null(或负数)之类的值?
有办法解决这个问题吗?我猜我有更好的方法来删除项目,或者我需要对我的 SelectionChanged 处理程序进行某种检查?
最佳答案
将 SelectionChanged 处理程序中的代码包装在
if (lstLocal.SelectedItem != null)
{
...
}
关于c# - WPF从列表框中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5543028/