【发布时间】:2010-11-01 21:36:57
【问题描述】:
如果我在选择项目时更改 ListBox 的 ItemsSource 属性,则会收到 IndexOutOfRange 异常,因为在选择项目时设置了 SelectedIndex 属性。如果在ListBox 中未选择任何项目,则不会引发异常,但即使我在更改ItemsSource 之前将SelectedItem 属性设置为null,如果选择了项目,异常仍然会发生,因为SelectedIndex 属性仍然具有值.
这个问题有解决方案吗?
编辑:这是示例代码,因为仅当我在我的 LINQ to objects 表达式中应用 Contains 过滤器并且在 ListBox 中选择了一个项目时才会出现此问题... MyList 是 CLR 对象的 List<>。 ..
lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1);
效果很好。这个修改后的 LINQ 查询也可以正常工作(如果没有选择任何项目),但如果选择了一个项目,我会得到 IndexOutOfRangeException
lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1 && i.DisplayName.Contains(someString));
如果我将此 LINQ 查询重定向到 var 或 CLR 对象列表,则查询工作正常,但当我尝试将其设为 ListBox 的 ItemsSource 时,我得到异常(即使我创建了此 var 或 CLR 列表我的 ListBox 的对象 ItemsSource 代替)。
【问题讨论】:
-
你能写出异常跟踪吗!