UWP开发中已初始化的ListBoxItem数组报NullReferenceException原因求解
问题原因及修复方案
核心诱因1:引用类型数组的元素未实例化
ListBoxItem属于引用类型,new ListBoxItem[512]仅为数组本身分配了连续的内存空间,数组内的每个元素默认值为null,并没有自动生成ListBoxItem的实例对象。你在循环中直接访问item[i].Content相当于访问null对象的属性,因此触发NullReferenceException。
核心诱因2:ListBox批量添加条目方法错误
listBox1.Items.Add()方法仅支持添加单个条目,传入数组会将整个数组作为单一条目挂载到ListBox中,无法达到你要批量展示所有条目的效果,需要改用AddRange()方法实现批量添加。
修正后代码
ListBoxItem[] item = new ListBoxItem[512]; for (int i = 0; i <= 511; i++) { // 先实例化当前索引对应的ListBoxItem对象 item[i] = new ListBoxItem(); item[i].Content = "Preset " + (i + 1) + ":" + presets[i]; } listBox1.Items.Clear(); // 批量添加数组内所有元素 listBox1.Items.AddRange(item);
补充说明:你之前在WinForms中运行相同逻辑没有报错,大概率是你之前的WinForms代码中隐式包含了ListBoxItem的实例化步骤,并非框架差异导致的兼容问题。
内容的提问来源于stack exchange,提问作者na-no.
相关产品推荐
相关产品推荐

