动态绑定WPF listview时系统argumentoutofrange异常

时间:2015-08-06 22:35:15

标签: c# .net wpf exception

我的桌面应用程序有一个listview(gridview),它是这样创建的:

class ObjItem
{
   list<string> Attributes;
}
ObservableCollection<ObjItem> Rows;
ItemSource = Rows;

每次更新`Rows时,我都会用代码动态绑定新列:

int index = 0;
foreach (var column in columns)
{
   gridView.Columns.Add(new GridViewColumn
   {
       Header = column,
       DisplayMemberBinding = new Binding(string.Format("{0}[{1}]", "Attributes", index++))
   });
}

每次Rows更新AttributesAdd都会正确更新ArgumentOutOfRangeException个字符串。但是,如果我们设置调试器来捕获所有异常,则会报告Attributes的异常并且VS调试器能够捕获此异常。

“mscorlib.dll中出现'System.ArgumentOutOfRangeException'类型的第一次机会异常。附加信息:索引超出范围。必须是非负数且小于集合的大小。”

如果使用`Attributes.AddRange(Enumerable.Repeat(“”,20)保留{{1}}一些空字符串值,它可以正常工作而不会捕获任何异常。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

尝试将索引初始化为-1而不是0:

int index = -1;

看起来你太早了。