c# - WPF从列表框中删除项目

标签 c# wpf event-handling

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

相关文章:

c# - WPF:在不破坏 IsEnabled 的情况下实现 ICommandSource

c# - 如何更改新 XML 文档中属性的值?

c# - 您应该在 Windows 8 应用程序的哪个位置编码 'privacy policy' ?

c# - 单元测试自定义 Serilog 接收器

c# - WPF 属性面板类似于 Visual Studio 的

c# - 无法从文本文件加载带有 xml 实体的流文档

c# - Javascript 执行 .cs 中的代码?

javascript - Dojo 发布 - 订阅不工作

wpf - 用 WPF 应用程序替换 Windows shell

用于插入新 pre 标记的 JavaScript 事件处理程序