我创建了一个列表框'因为我需要显示一些变量行为,每个项目都包含一个简单的图表和一个带有变量名称的标题。每次我需要导入新变量时,我都会读取带有变量值的cvs文件,并在我的viewmodel中填充变量集合。此变量集合绑定到列表框。所以,如果我第一次正常工作,从这个文件加载两个或三个变量。当我尝试再次加载此文件时,问题就出现了,我向我的proyect添加了最大数量的变量。
类型'System.ArgumentOutOfRangeException'的未处理异常 发生在WindowsBase.dll
中其他信息:指数超出范围。必须是非负面的 并且小于集合的大小
这是我的代码(异常发生在Variables.Collection.Add(...)行):
private void ImportNewVariables(VariableDetailsViewModel[] variablesToImport, Worksheet worksheet)
{
...
Application.Current.Dispatcher.Invoke(
DispatcherPriority.Normal,
(Action)(() => Variables.Collection.Clear()));
foreach (var variable in variablesToImport)
{
Application.Current.Dispatcher.Invoke(
DispatcherPriority.Normal,
(Action)(() => Variables.Collection.Add(variable)));
}
Application.Current.Dispatcher.Invoke(
DispatcherPriority.Normal,
(Action)(() => Variables.Selected = variablesToImport.FirstOrDefault(v => v.IsIncluded)));
OnPropertyChanged("Variables");
}
我想问题可能是列表框没有修改它的长度,它试图评估新项目的集合,然后结果索引超出范围。我真的不知道为什么它第一次工作正常,并在下一个例外。