我的桌面应用程序有一个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
更新Attributes
时Add
都会正确更新ArgumentOutOfRangeException
个字符串。但是,如果我们设置调试器来捕获所有异常,则会报告Attributes
的异常并且VS调试器能够捕获此异常。
“mscorlib.dll中出现'System.ArgumentOutOfRangeException'类型的第一次机会异常。附加信息:索引超出范围。必须是非负数且小于集合的大小。”
如果使用`Attributes.AddRange(Enumerable.Repeat(“”,20)保留{{1}}一些空字符串值,它可以正常工作而不会捕获任何异常。
任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
尝试将索引初始化为-1而不是0:
int index = -1;
看起来你太早了。