WindowsBase.dll中发生未处理的“System.ArgumentOutOfRangeException”类型异常

时间:2016-11-03 19:32:02

标签: c# wpf

我创建了一个列表框'因为我需要显示一些变量行为,每个项目都包含一个简单的图表和一个带有变量名称的标题。每次我需要导入新变量时,我都会读取带有变量值的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");
        }  

我想问题可能是列表框没有修改它的长度,它试图评估新项目的集合,然后结果索引超出范围。我真的不知道为什么它第一次工作正常,并在下一个例外。

0 个答案:

没有答案